diff options
Diffstat (limited to 'assets')
-rw-r--r-- | assets/javascript/remove-twitter-sw.js | 68 |
1 files changed, 44 insertions, 24 deletions
diff --git a/assets/javascript/remove-twitter-sw.js b/assets/javascript/remove-twitter-sw.js index d9d3ce3e..222a7283 100644 --- a/assets/javascript/remove-twitter-sw.js +++ b/assets/javascript/remove-twitter-sw.js @@ -1,6 +1,20 @@ -'use strict'; +"use strict"; -const nitterDefault = 'https://nitter.net'; +const nitterInstances = [ + "https://nitter.net", + "https://nitter.snopyta.org", + "https://nitter.42l.fr", + "https://nitter.nixnet.services", + "https://nitter.13ad.de", + "https://nitter.pussthecat.org", + "https://nitter.mastodont.cat", + "https://nitter", + "https://nitter.tedomum.net", + "https://nitter.cattube.org", + "https://nitter.fdn.fr", + "https://nitter.1d4.us", + "https://nitter.kavin.rocks", +]; let disableNitter; let nitterInstance; @@ -9,61 +23,67 @@ let exceptions; window.browser = window.browser || window.chrome; +function getRandomInstance() { + return nitterInstances[~~(nitterInstances.length * Math.random())]; +} + function isNotException(url) { - return !exceptions.some(regex => (regex.test(url.href))); + return !exceptions.some((regex) => regex.test(url.href)); } function shouldRedirect(url) { - return !redirectBypassFlag && + return ( + !redirectBypassFlag && isNotException(url) && !disableNitter && url.host !== nitterInstance && - !url.pathname.includes('/home'); + !url.pathname.includes("/home") + ); } function redirectTwitter(url) { - if (url.host.split('.')[0] === 'pbs') { + if (url.host.split(".")[0] === "pbs") { return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`; - } else if (url.host.split('.')[0] === 'video') { + } 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', - 'redirectBypassFlag', - 'exceptions' + "nitterInstance", + "disableNitter", + "removeTwitterSW", + "redirectBypassFlag", + "exceptions", ], (result) => { redirectBypassFlag = result.redirectBypassFlag; browser.storage.sync.set({ - redirectBypassFlag: false + redirectBypassFlag: false, }); if (!result.removeTwitterSW) { disableNitter = result.disableNitter; - nitterInstance = result.nitterInstance || nitterDefault; - exceptions = result.exceptions ? result.exceptions.map(e => { - return new RegExp(e); - }) : []; - navigator.serviceWorker.getRegistrations().then(registrations => { + nitterInstance = result.nitterInstance || getRandomInstance(); + exceptions = result.exceptions + ? result.exceptions.map((e) => { + return new RegExp(e); + }) + : []; + navigator.serviceWorker.getRegistrations().then((registrations) => { for (let registration of registrations) { - if (registration.scope === 'https://twitter.com/') { + if (registration.scope === "https://twitter.com/") { registration.unregister(); - console.log('Unregistered Twitter SW', registration); + console.log("Unregistered Twitter SW", registration); } } }); const url = new URL(window.location); if (shouldRedirect()) { const redirect = redirectTwitter(url); - console.info( - 'Redirecting', `"${url.href}"`, '=>', `"${redirect}"` - ); + console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`); window.location = redirect; } } |