MCPcopy Create free account
hub / github.com/Useful-Scripts-Extension/useful-script / fbBlockFeatures

Function fbBlockFeatures

scripts/fb_blockSeenAndTyping.js:51–194  ·  view source on GitHub ↗
({
  block_seen_chat = true,
  block_typing_chat = true,
})

Source from the content-addressed store, hash-verified

49}
50
51export function fbBlockFeatures({
52 block_seen_chat = true,
53 block_typing_chat = true,
54}) {
55 const ignoreTopic = [
56 "/send_additional_contacts",
57 "/br_sr",
58 "/sr_res",
59 "/ls_app_settings",
60 ];
61 const ignoreCmd = ["pingreq", "subscribe"];
62 const c_user = getUserID();
63 const opts = { protocolVersion: 3 };
64 let qq = [];
65
66 function getCurrentTimestamp() {
67 return Date.now() * 1000;
68 }
69
70 const wsProxy = new Proxy(window.WebSocket, {
71 construct: function (target, args) {
72 const instance = new target(...args),
73 openHandler = (e) => {},
74 messageHandler = (e) => {
75 e = new Uint8Array(e.data);
76 let t = parser(opts);
77
78 // mes_block_delivery
79 2e3 < e.length &&
80 (t.on("packet", (e) => {
81 "publish" === e.cmd &&
82 "/ls_resp" === e.topic &&
83 1 === e.qos &&
84 qq.push(e.messageId);
85 }),
86 t.parse(e));
87 },
88 closeHandler = (e) => {
89 instance.removeEventListener("open", openHandler);
90 instance.removeEventListener("close", closeHandler);
91 instance.removeEventListener("message", messageHandler);
92 };
93 instance.addEventListener("message", messageHandler);
94 instance.addEventListener("open", openHandler);
95 instance.addEventListener("close", closeHandler);
96
97 instance.send = new Proxy(instance.send, {
98 apply: function (target, thisArg, args) {
99 const e = new Uint8Array(args[0]);
100 let t = parser(opts);
101
102 t.on("packet", (i) => {
103 let rPayload;
104 try {
105 if (ignoreTopic.includes(i.topic) || ignoreCmd.includes(i.cmd)) {
106 return target.apply(thisArg, args);
107 }
108

Callers 1

Calls 5

parseMethod · 0.80
getUserIDFunction · 0.70
safeParseFunction · 0.70
getCurrentTimestampFunction · 0.70
onMethod · 0.45

Tested by

no test coverage detected