Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Web Im show deleted messages
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Показывает удаленные сообщения (только если открыт диалог)
  6. // @author Flyink13
  7. // @match https://*.vk.com/*
  8. // @copyright 2018, flyink13 (https://openuserjs.org/users/flyink13)
  9. // @updateURL https://openuserjs.org/meta/flyink13/Web_Im_show_deleted_messages.meta.js
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. /* global geByClass1 */
  14.  
  15.  
  16. function showDeletedMessages() {
  17. var flagDelete = 1 << 7;
  18. var typeUpdateFlag = 2;
  19. XMLHttpRequest.prototype.send = (function buildFakeSend(sendOrg) {
  20. return function fakeSend(...sendArgs) {
  21. var self = this;
  22.  
  23. self.onreadystatechange = (function buildFakeOnChang(changeOrg) {
  24. if (!changeOrg) return;
  25.  
  26. return function fakeOnReadyStateChange (...changeArgs) {
  27. var isLongPoll = (/^https:\/\/imv4\.vk\.com\/im\d+/.test(self.responseURL));
  28. var isReady = (self.readyState == 4);
  29.  
  30. if (isLongPoll && isReady && self.responseText) {
  31. try {
  32. let newJson = JSON.parse(self.responseText);
  33. newJson.updates.forEach((update) => {
  34. var isDelete = (update[0] == typeUpdateFlag && update[2] & flagDelete);
  35. if (isDelete) {
  36. var el = geByClass1('_im_mess_' + update[1]);
  37. if (el) {
  38. var newEl = el.cloneNode(true);
  39. el.style.opacity = 0.5;
  40. el.parentElement.insertBefore(newEl, el);
  41. }
  42. }
  43.  
  44. return !isDelete;
  45. });
  46. // тут пробовал заменять self.responseText но ничего не вышло :C
  47. } catch(e) {}
  48. }
  49.  
  50. return changeOrg.apply(self, changeArgs);
  51. };
  52. })(self.onreadystatechange);
  53.  
  54. return sendOrg.apply(self, sendArgs);
  55. };
  56. })(XMLHttpRequest.prototype.send);
  57. }
  58.  
  59. (function injectScript() {
  60. var script = document.createElement('script');
  61. var code = '(' + showDeletedMessages + ')();';
  62. script.appendChild(document.createTextNode(code));
  63. (document.body || document.head || document.documentElement).appendChild(script);
  64. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement