Advertisement
YT_o4ka

Untitled

May 25th, 2022
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. // ==UserScript==
  2. // @name красный
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0.2
  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. //За редачи спасибо Арсению vk.com/belikanov
  12. // ==/UserScript==
  13.  
  14. /* global geByClass1 */
  15.  
  16.  
  17. function showDeletedMessages() {
  18. var flagDelete = 1 << 7;
  19. var typeUpdateFlag = 2;
  20. XMLHttpRequest.prototype.send = (function buildFakeSend(sendOrg) {
  21. return function fakeSend(...sendArgs) {
  22. var self = this;
  23.  
  24. self.onreadystatechange = (function buildFakeOnChang(changeOrg) {
  25. if (!changeOrg) return;
  26.  
  27. return function fakeOnReadyStateChange (...changeArgs) {
  28. var isLongPoll = (/^https:\/\/.?im(v4)?\.vk\.com\/.?im\d+/.test(self.responseURL));
  29. var isReady = (self.readyState == 4);
  30.  
  31. if (isLongPoll && isReady && self.responseText) {
  32. try {
  33. let newJson = JSON.parse(self.responseText);
  34. newJson.updates.forEach((update) => {
  35. var isDelete = (update[0] == typeUpdateFlag && update[2] & flagDelete);
  36. if (isDelete) {
  37. var el = geByClass1('_im_mess_' + update[1]);
  38. if (el) {
  39. var newEl = el.cloneNode(true);
  40. el.style.backgroundColor = 'rgb(228, 217, 111)';
  41. el.parentElement.insertBefore(newEl, el);
  42. }
  43. }
  44. if (update[0] == 5) {
  45. var el = geByClass1('_im_mess_' + update[1]);
  46. if (el) {
  47. var newEl = el.cloneNode(true);
  48. el.style.backgroundColor = 'rgb(111, 181, 228)';
  49. el.parentElement.insertBefore(newEl, el);
  50. isDelete = true;
  51. }
  52. }
  53.  
  54. return !isDelete;
  55. });
  56. // тут пробовал заменять self.responseText но ничего не вышло :C
  57. } catch(e) {}
  58. }
  59.  
  60. return changeOrg.apply(self, changeArgs);
  61. };
  62. })(self.onreadystatechange);
  63.  
  64. return sendOrg.apply(self, sendArgs);
  65. };
  66. })(XMLHttpRequest.prototype.send);
  67. }
  68.  
  69. (function injectScript() {
  70. var script = document.createElement('script');
  71. var code = '(' + showDeletedMessages + ')();';
  72. script.appendChild(document.createTextNode(code));
  73. (document.body || document.head || document.documentElement).appendChild(script);
  74. })();
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement