Skip to content

Commit 8a2c680

Browse files
committed
who is typing - wip
1 parent 7662ccd commit 8a2c680

File tree

6 files changed

+82
-24
lines changed

6 files changed

+82
-24
lines changed

empty_script.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ export default {
1111
blackList: [],
1212
whiteList: [],
1313

14-
// path to script file that run (if enable autorun) in web page context
15-
onDocumentStart: "",
16-
onDocumentEnd: "",
17-
onDocumentIdle: "",
14+
// run (if enable autorun) in web page context
15+
onDocumentStart: () => {},
16+
onDocumentEnd: () => {},
17+
onDocumentIdle: () => {},
1818

1919
// run onclick in extension-popup-page context
2020
onClickExtension: () => {},

popup/index.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ const flagImg = document.querySelector("img#flag");
3333
const searchInput = document.querySelector(".search input");
3434
const searchFound = document.querySelector(".search .searchFound");
3535

36-
async function initLanguage() {
36+
function initLanguage() {
3737
flagImg.setAttribute("src", getFlag());
3838

39-
flagImg.onclick = async () => {
39+
flagImg.onclick = () => {
4040
toggleLang();
4141
flagImg.setAttribute("src", getFlag());
4242

@@ -46,9 +46,9 @@ async function initLanguage() {
4646
};
4747
}
4848

49-
async function createTabs() {
49+
function createTabs() {
5050
// prepare tabs
51-
await refreshSpecialTabs();
51+
refreshSpecialTabs();
5252

5353
// clear UI
5454
tabDiv.innerHTML = "";
@@ -85,7 +85,7 @@ async function createTabs() {
8585
}
8686

8787
// open tab
88-
let activeTabId = await activeTabIdSaver.get();
88+
let activeTabId = activeTabIdSaver.get();
8989
activeTabId && openTab(allTabs.find((tab) => tab.id === activeTabId));
9090
}
9191

@@ -126,7 +126,7 @@ async function createTabContent(tab) {
126126
});
127127
contentContainer.appendChild(emptyText);
128128
} else {
129-
const favoriteScriptIds = await favoriteScriptsSaver.getIds();
129+
const favoriteScriptIds = favoriteScriptsSaver.getIds();
130130
tab.scripts.forEach((script) => {
131131
let isFavorite = favoriteScriptIds.find((id) => script.id === id);
132132
contentContainer.appendChild(createScriptButton(script, isFavorite));
@@ -157,7 +157,7 @@ function createScriptButton(script, isFavorite = false) {
157157
const checkmark = document.createElement("button");
158158
checkmark.className = "checkmark tooltip";
159159
checkmark.onclick = async (e) => {
160-
let newValue = await toggleActiveScript(script.id);
160+
let newValue = toggleActiveScript(script.id);
161161
updateButtonChecker(script, buttonContainer, newValue);
162162
};
163163

@@ -279,7 +279,7 @@ function createScriptButton(script, isFavorite = false) {
279279
async function updateButtonChecker(script, button, val) {
280280
let checkmark = button.querySelector(".checkmark");
281281
if (!checkmark) return;
282-
if (val ?? (await isActiveScript(script.id))) {
282+
if (val ?? isActiveScript(script.id)) {
283283
checkmark.classList.add("active");
284284
checkmark.title = t({
285285
vi: "Tắt tự động chạy",
@@ -366,7 +366,7 @@ function initSearch() {
366366
(async function () {
367367
// initOpenInNewTabBtn();
368368
initSearch();
369-
await initLanguage();
370-
await createTabs();
369+
initLanguage();
370+
createTabs();
371371
await checkForUpdate();
372372
})();

popup/tabs.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ const tabs = [
9393
...CATEGORY.facebook,
9494
scripts: [
9595
s.fb_revealDeletedMessages,
96+
s.fb_whoIsTyping,
9697
createTitle("--- UI ---", "--- Giao diện ---"),
9798
s.fb_toggleLight,
9899
s.fb_toggleNewFeed,
@@ -440,13 +441,13 @@ function sortScriptsByTab(scripts, _tabs, addTabTitle = true) {
440441
return result;
441442
}
442443

443-
async function refreshSpecialTabs() {
444+
function refreshSpecialTabs() {
444445
// add data to special tabs
445446
let recentTab = specialTabs.find((tab) => tab.id === CATEGORY.recently.id);
446-
if (recentTab) recentTab.scripts = await recentScriptsSaver.get();
447+
if (recentTab) recentTab.scripts = recentScriptsSaver.get();
447448

448449
let favoriteTab = specialTabs.find((tab) => tab.id === CATEGORY.favorite.id);
449-
if (favoriteTab) favoriteTab.scripts = await favoriteScriptsSaver.get();
450+
if (favoriteTab) favoriteTab.scripts = favoriteScriptsSaver.get();
450451

451452
let allTab = specialTabs.find((tab) => tab.id === CATEGORY.all.id);
452453
if (allTab) allTab.scripts = sortScriptsByTab(Object.values(s), tabs);

scripts/fb_revealDeletedMessages.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ export default {
1717
websocket_instant.addEventListener("message", async function (achunk) {
1818
const utf8_str = new TextDecoder("utf-8").decode(achunk.data);
1919
// Do something here
20-
console.log(utf8_str);
20+
21+
if (utf8_str.includes("updateTypingIndicator")) {
22+
// console.log(utf8_str);
23+
}
2124
});
2225
return websocket_instant;
2326
};
@@ -130,13 +133,13 @@ export default {
130133
// MWChatTypingIndicator.bs
131134
// MWPTypingIndicators.bs
132135
requireLazy(["LSUpdateTypingIndicator"], (LSUpdateTypingIndicator) => {
133-
alert("abc");
134-
// const LSUpdateTypingIndicatorOrig = LSUpdateTypingIndicator;
136+
// alert("abc");
137+
const LSUpdateTypingIndicatorOrig = LSUpdateTypingIndicator;
135138

136-
// LSUpdateTypingIndicator = function () {
137-
// console.log(arguments);
138-
// return LSUpdateTypingIndicatorOrig.apply(this, arguments);
139-
// };
139+
LSUpdateTypingIndicator = function () {
140+
console.log(arguments);
141+
return LSUpdateTypingIndicatorOrig.apply(this, arguments);
142+
};
140143
});
141144
},
142145
};

scripts/fb_whoIsTyping.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
export default {
2+
icon: '<i class="fa-regular fa-comment-dots"></i>',
3+
name: {
4+
en: "Facebook - Who is typing to you?",
5+
vi: "Facebook - Ai đang nhắn cho bạn?",
6+
},
7+
description: {
8+
en: "Notify when someone is typing chat to you.",
9+
vi: "Thông báo khi có người đang gõ tin nhắn cho bạn.",
10+
},
11+
whiteList: ["https://*.facebook.com/*", "https://*.messenger.com/*"],
12+
13+
onDocumentStart: () => {
14+
function notifyTypingEvent() {
15+
16+
}
17+
function saveTyingEvent(uid, typing) {
18+
let key = "ufs-fb_whoIsTyping";
19+
let old = JSON.parse(localStorage.getItem(key) ?? "[]");
20+
old.push({
21+
time: new Date().getTime(),
22+
uid: uid,
23+
typing: typing,
24+
});
25+
localStorage.setItem(key, JSON.stringify(old));
26+
}
27+
28+
const WebSocketOrig = window.WebSocket;
29+
window.WebSocket = function fakeConstructor(dt, config) {
30+
const websocket_instant = new WebSocketOrig(dt, config);
31+
websocket_instant.addEventListener("message", async function (achunk) {
32+
let utf8_str = new TextDecoder("utf-8").decode(achunk.data);
33+
34+
if (utf8_str.includes("updateTypingIndicator")) {
35+
let isStartTyping = utf8_str.includes(",true)");
36+
let isStopTyping = utf8_str.includes(",false)");
37+
38+
let arr = utf8_str.match(/(\[)(.*?)(\])/g);
39+
let uid = UsefulScriptGlobalWebpageContext.Facebook.decodeArrId(
40+
JSON.parse(arr[arr.length - 2])
41+
);
42+
43+
console.log(uid);
44+
saveTyingEvent(uid, isStartTyping);
45+
}
46+
});
47+
return websocket_instant;
48+
};
49+
window.WebSocket.prototype = WebSocketOrig.prototype;
50+
window.WebSocket.prototype.constructor = window.WebSocket;
51+
},
52+
};

scripts/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ import fb_invisible_message from "./fb_invisible_message.js";
158158
import insta_injectDownloadBtn from "./insta_injectDownloadBtn.js";
159159
import studocu_bypassPreview from "./studocu_bypassPreview.js";
160160
import fb_revealDeletedMessages from "./fb_revealDeletedMessages.js";
161+
import fb_whoIsTyping from "./fb_whoIsTyping.js";
161162

162163
// inject badges
163164
const allScripts = {
@@ -337,6 +338,7 @@ const allScripts = {
337338
insta_injectDownloadBtn: addBadge(insta_injectDownloadBtn, BADGES.new),
338339
studocu_bypassPreview: addBadge(studocu_bypassPreview, BADGES.new),
339340
fb_revealDeletedMessages: addBadge(fb_revealDeletedMessages, BADGES.hot),
341+
fb_whoIsTyping: addBadge(fb_whoIsTyping, BADGES.new),
340342
};
341343

342344
// alert(Object.keys(allScripts).length);

0 commit comments

Comments
 (0)