about summary refs log tree commit diff stats
path: root/assets
diff options
context:
space:
mode:
authorSimonBrazell <simon@brazell.com.au>2020-09-01 17:26:23 +1000
committerSimonBrazell <simon@brazell.com.au>2020-09-01 17:26:23 +1000
commitae6f4f6a6cd9fbd5fe583f52782e94641c752706 (patch)
tree40d4d249cb5dadc3ab98cfe453fb8101a3a6c6cf /assets
parentFixes #89 - autoplay reversed, improve instance selects (#90) (diff)
downloadlibredirect-ae6f4f6a6cd9fbd5fe583f52782e94641c752706.zip
Randomise instances when empty (#48)
Diffstat (limited to 'assets')
-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 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;
       }
     }