From b01ac7c9662f83506713094fc54bfa346a3ab9fe Mon Sep 17 00:00:00 2001 From: SimonBrazell Date: Sun, 29 Mar 2020 11:34:46 +1100 Subject: Proactively remove Twitter service worker --- content-script.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 content-script.js (limited to 'content-script.js') diff --git a/content-script.js b/content-script.js new file mode 100644 index 00000000..d13de3e1 --- /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; + } + } + } +); -- cgit 1.4.1