Skip to content

Commit 76dff42

Browse files
committed
feat: add slur by right click
1 parent 3b0cbcc commit 76dff42

File tree

4 files changed

+86
-15
lines changed

4 files changed

+86
-15
lines changed

browser-extension/plugin/manifest.firefox.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"webRequest",
1111
"https://twitter.com/*",
1212
"https://ogbv-plugin.tattle.co.in/*",
13-
"http://localhost:3000/*"
13+
"http://localhost:3000/*",
14+
"contextMenus"
1415
],
1516
"background": {
1617
"scripts": ["background.js"]

browser-extension/plugin/manifest.json

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
"description": "Moderate your Twitter Feed",
55
"version": "0.1.9",
66
"author": "tattlemade|cis",
7-
"content_security_policy": {
8-
"extension_pages": "default-src 'none'; connect-src http://localhost:3000 https://ogbv-plugin.tattle.co.in/ https://uli-media.tattle.co.in/; font-src https://fonts.gstatic.com; object-src 'none'; script-src 'self'; style-src https://fonts.googleapis.com 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-o7bYsu5iNiTxIObyslerFNZrDfkROYhElKhuOItXvVk=' 'sha256-ymN5q6v7MB6PygHnN3N59Z0O74H6pvF05DOnMn25Xvg='; img-src https://uli-media.tattle.co.in/; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; report-uri 'none';"
9-
},
107
"host_permissions": [
118
"https://twitter.com/*",
129
"https://ogbv-plugin.tattle.co.in/"
1310
],
14-
"permissions": ["storage"],
11+
"permissions": ["storage", "contextMenus"],
1512
"background": {
1613
"service_worker": "background.js"
1714
},
+54
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,62 @@
1+
console.log('bg script 7');
2+
13
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo) {
24
if (changeInfo.url) {
5+
console.log('url changed');
36
chrome.tabs.sendMessage(tabId, {
47
message: 'URL_CHANGED',
58
url: changeInfo.url
69
});
710
}
811
});
12+
13+
let userBrowser;
14+
const userAgent = navigator.userAgent.toString();
15+
if (userAgent.indexOf('Mozilla')) {
16+
userBrowser = 'firefox';
17+
} else if (userAgent.indexOf('Chrome')) {
18+
userBrowser = 'chrome';
19+
} else {
20+
userBrowser = 'unsupported';
21+
}
22+
23+
let contextMenus;
24+
let storage;
25+
let tabs;
26+
console.log(userBrowser);
27+
if (userBrowser === 'firefox') {
28+
contextMenus = browser.contextMenus;
29+
tabs = browser.tabs;
30+
} else if (userBrowser === 'chrome') {
31+
contextMenus = chrome.contextMenus;
32+
tabs = chrome.tabs;
33+
}
34+
console.log(contextMenus);
35+
36+
contextMenus.create(
37+
{
38+
id: 'add-slur',
39+
title: 'Add Slur to Uli',
40+
contexts: ['selection']
41+
},
42+
() => {
43+
console.log('context menu created');
44+
}
45+
);
46+
47+
contextMenus.onClicked.addListener((info, tab) => {
48+
switch (info.menuItemId) {
49+
case 'add-slur':
50+
console.log('slur added');
51+
tabs.sendMessage(
52+
tab.id,
53+
{ type: 'SLUR_ADDED', slur: info.selectionText },
54+
function (response) {
55+
console.log(response);
56+
}
57+
);
58+
break;
59+
default:
60+
console('unexpected action');
61+
}
62+
});

browser-extension/plugin/src/content-script.js

+29-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const { setOnChangeListener } = dom;
44
import transform from './transform';
55
import { log } from './logger';
66
import repository from './repository';
7-
const { getPreferenceData } = repository;
7+
const { getPreferenceData, setPreferenceData } = repository;
88
import { updateSlurList } from './slur-replace';
99

1010
log('Content Script Loaded');
@@ -39,23 +39,42 @@ function processPage(newUrl) {
3939
* eg : When a user clicks on a tweet on their home timeline, they
4040
* go from the home page to the user status page.
4141
*/
42-
chrome.runtime.onMessage.addListener(function (request) {
43-
if (request.message === 'URL_CHANGED') {
44-
const newUrl = request.url;
45-
log('Url Changed', newUrl);
46-
processPage(location.href);
47-
}
48-
});
4942

50-
chrome.runtime.onMessage.addListener(async function (message) {
51-
if (message.type === 'updateData') {
43+
chrome.runtime.onMessage.addListener(async function (request) {
44+
if (request.type === 'updateData') {
5245
console.log('data changed. time to update slurs');
5346
const preference = await getPreferenceData();
5447
console.log(preference);
5548
if (preference.slurList != undefined) {
5649
updateSlurList(preference.slurList);
5750
processPage(location.href);
5851
}
52+
return true;
53+
}
54+
if (request.message === 'URL_CHANGED') {
55+
const newUrl = request.url;
56+
log('Url Changed', newUrl);
57+
processPage(location.href);
58+
return true;
59+
}
60+
if (request.type === 'SLUR_ADDED') {
61+
const slur = request.slur;
62+
log('slur added from bg', slur);
63+
const pref = await getPreferenceData();
64+
if (!pref) {
65+
slurList = slur;
66+
await setPreferenceData({ ...pref, slurList });
67+
} else {
68+
let { slurList } = pref;
69+
if (!slurList || slurList === '') {
70+
slurList += slur;
71+
} else {
72+
slurList += `,${slur}`;
73+
}
74+
await setPreferenceData({ ...pref, slurList });
75+
}
76+
77+
return true;
5978
}
6079
});
6180

0 commit comments

Comments
 (0)