summaryrefslogtreecommitdiffstats
path: root/assets/javascript/remove-twitter-sw.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascript/remove-twitter-sw.js')
-rw-r--r--assets/javascript/remove-twitter-sw.js68
1 files changed, 44 insertions, 24 deletions
diff --git a/assets/javascript/remove-twitter-sw.js b/assets/javascript/remove-twitter-sw.js
index d9d3ce3..222a728 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;
}
}