diff options
author | Ruben Rodriguez <ruben@trisquel.info> | 2022-09-08 20:18:54 -0400 |
---|---|---|
committer | Ruben Rodriguez <ruben@trisquel.info> | 2022-09-08 20:18:54 -0400 |
commit | 5da28b0f8771834ae208d61431d632875e9f8e7d (patch) | |
tree | 688ecaff26197bad8abde617b4947b11d617309e /data/extensions/{b7f9d2cd-d772-4302-8c3f-eb941af36f76}/assets/javascripts/remove-twitter-sw.js | |
parent | 4a87716686104266a9cccc2d83cc249e312f3673 (diff) |
Updated extensions:
* Upgraded Privacy Redirect to 1.1.49 and configured to use the 10 most reliable invidious instances
* Removed ViewTube
* Added torproxy@icecat.gnu based on 'Proxy toggle' extension
* Added jShelter 0.11.1
* Upgraded LibreJS to 7.21.0
* Upgraded HTTPS Everywhere to 2021.7.13
* Upgraded SubmitMe to 1.9
Diffstat (limited to 'data/extensions/{b7f9d2cd-d772-4302-8c3f-eb941af36f76}/assets/javascripts/remove-twitter-sw.js')
-rw-r--r-- | data/extensions/{b7f9d2cd-d772-4302-8c3f-eb941af36f76}/assets/javascripts/remove-twitter-sw.js | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/data/extensions/{b7f9d2cd-d772-4302-8c3f-eb941af36f76}/assets/javascripts/remove-twitter-sw.js b/data/extensions/{b7f9d2cd-d772-4302-8c3f-eb941af36f76}/assets/javascripts/remove-twitter-sw.js new file mode 100644 index 0000000..d431f1a --- /dev/null +++ b/data/extensions/{b7f9d2cd-d772-4302-8c3f-eb941af36f76}/assets/javascripts/remove-twitter-sw.js @@ -0,0 +1,186 @@ +"use strict"; + +const nitterInstances = [ + "https://nitter.net", + "https://nitter.snopyta.org", + "https://nitter.42l.fr", + "https://nitter.nixnet.services", + "https://nitter.pussthecat.org", + "https://nitter.dark.fail", + "https://nitter.tedomum.net", + "https://nitter.cattube.org", + "https://nitter.fdn.fr", + "https://nitter.1d4.us", + "https://nitter.kavin.rocks", + "https://tweet.lambda.dance", + "https://nitter.cc", + "https://nitter.vxempire.xyz", + "https://nitter.unixfox.eu", + "https://bird.trom.tf" +]; + +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(url)) { + const redirect = redirectTwitter(url); + console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`); + window.location = redirect; + } + } + } +); + +// Keeping this here until https://bugzilla.mozilla.org/show_bug.cgi?id=1536094 is fixed... +// +//"use strict"; +// +//let disableNitter; +//let nitterInstance; +//let redirectBypassFlag; +//let exceptions; +// +//window.browser = window.browser || window.chrome; +// +//Promise.all([ +// import(browser.extension.getURL("src/assets/javascripts/helpers/common.js")), +// import(browser.extension.getURL("src/assets/javascripts/helpers/twitter.js")), +//]).then( +// (helpers) => { +// let commonHelper; +// let twitterHelper; +// [commonHelper, twitterHelper] = helpers; +// +// 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 || +// commonHelper.default.getRandomInstance( +// twitterHelper.default.redirects +// ); +// 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(url)) { +// const redirect = redirectTwitter(url); +// console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`); +// window.location = redirect; +// } +// } +// } +// ); +// }, +// (error) => { +// console.error(error); +// } +//); |