summaryrefslogtreecommitdiffstats
path: root/content-script.js
diff options
context:
space:
mode:
authorSimonBrazell <simon@brazell.com.au>2020-03-29 11:34:46 +1100
committerSimonBrazell <simon@brazell.com.au>2020-03-29 11:36:01 +1100
commitb01ac7c9662f83506713094fc54bfa346a3ab9fe (patch)
treecf851ce4a98971a17595f64504b3b93f4c462222 /content-script.js
parent1f205990eba1aaf5abf67ba29e6bcd9262df8d2b (diff)
downloadprivacy-redirect-b01ac7c9662f83506713094fc54bfa346a3ab9fe.tar.gz
privacy-redirect-b01ac7c9662f83506713094fc54bfa346a3ab9fe.tar.bz2
privacy-redirect-b01ac7c9662f83506713094fc54bfa346a3ab9fe.zip
Proactively remove Twitter service worker
Diffstat (limited to 'content-script.js')
-rw-r--r--content-script.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/content-script.js b/content-script.js
new file mode 100644
index 0000000..d13de3e
--- /dev/null
+++ b/content-script.js
@@ -0,0 +1,44 @@
+'use strict';
+
+const nitterDefault = 'https://nitter.net';
+
+let disableNitter;
+let nitterInstance;
+
+window.browser = window.browser || window.chrome;
+
+function redirectTwitter(url) {
+ if (url.host.split('.')[0] === 'pbs') {
+ return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
+ } else if (url.host.split('.')[0] === 'video') {
+ return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
+ } else {
+ return `${nitterInstance}${url.pathname}${url.search}`;
+ };
+}
+
+browser.storage.sync.get(
+ ['nitterInstance', 'disableNitter', 'removeTwitterSW'],
+ (result) => {
+ if (!result.removeTwitterSW) {
+ disableNitter = result.disableNitter;
+ nitterInstance = result.nitterInstance || nitterDefault;
+ navigator.serviceWorker.getRegistrations().then(registrations => {
+ for (let registration of registrations) {
+ if (registration.scope === 'https://twitter.com/') {
+ registration.unregister();
+ console.log('Unregistered Twitter SW', registration);
+ }
+ }
+ });
+ const url = new URL(window.location);
+ if (!disableNitter && url.host !== nitterInstance) {
+ const redirect = redirectTwitter(url);
+ console.info(
+ 'Redirecting', `"${url.href}"`, '=>', `"${redirect}"`
+ );
+ window.location = redirect;
+ }
+ }
+ }
+);