SHARE
TWEET

Untitled

a guest Jul 16th, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. })();
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top