diff options
| author | Austin Huang <im@austinhuang.me> | 2020-10-23 19:15:38 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-23 19:15:38 -0400 |
| commit | c66891384238aa7f88956034e21b663c01e93eaa (patch) | |
| tree | 4c42861245b20c78a70afdacff86c61b7d01397c /assets/javascript/remove-twitter-sw.js | |
| parent | 50477da8d73997c012f5466212d2264c68ee5a26 (diff) | |
| parent | ed4ebad3766f5237448841ce6c796ebe88bfb265 (diff) | |
| download | privacy-redirect-c66891384238aa7f88956034e21b663c01e93eaa.tar.gz privacy-redirect-c66891384238aa7f88956034e21b663c01e93eaa.tar.bz2 privacy-redirect-c66891384238aa7f88956034e21b663c01e93eaa.zip | |
Merge pull request #2 from SimonBrazell/master
force update
Diffstat (limited to 'assets/javascript/remove-twitter-sw.js')
| -rw-r--r-- | assets/javascript/remove-twitter-sw.js | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/assets/javascript/remove-twitter-sw.js b/assets/javascript/remove-twitter-sw.js new file mode 100644 index 0000000..222a728 --- /dev/null +++ b/assets/javascript/remove-twitter-sw.js @@ -0,0 +1,91 @@ +"use strict"; + +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; +let redirectBypassFlag; +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)); +} + +function shouldRedirect(url) { + return ( + !redirectBypassFlag && + isNotException(url) && + !disableNitter && + url.host !== nitterInstance && + !url.pathname.includes("/home") + ); +} + +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", + "redirectBypassFlag", + "exceptions", + ], + (result) => { + redirectBypassFlag = result.redirectBypassFlag; + browser.storage.sync.set({ + redirectBypassFlag: false, + }); + if (!result.removeTwitterSW) { + disableNitter = result.disableNitter; + 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/") { + registration.unregister(); + console.log("Unregistered Twitter SW", registration); + } + } + }); + const url = new URL(window.location); + if (shouldRedirect()) { + const redirect = redirectTwitter(url); + console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`); + window.location = redirect; + } + } + } +); |
