about summary refs log tree commit diff stats
path: root/background.js
diff options
context:
space:
mode:
authorSimon Brazell <simon.brazell@gmail.com>2019-10-07 22:59:31 +1100
committerSimon Brazell <simon.brazell@gmail.com>2019-10-07 22:59:31 +1100
commit7249afb8ed86690f9ab7ce0b4bdd604f2c41c291 (patch)
treed495be3bdbe5d580253eecc1e4c4ebdeb876ddde /background.js
parentAdd popup & options pages (diff)
downloadlibredirect-7249afb8ed86690f9ab7ce0b4bdd604f2c41c291.zip
Complete options & popup menus
Diffstat (limited to 'background.js')
-rw-r--r--background.js59
1 files changed, 48 insertions, 11 deletions
diff --git a/background.js b/background.js
index 2fb698f1..d5c8346a 100644
--- a/background.js
+++ b/background.js
@@ -1,19 +1,56 @@
-const nitter = "https://nitter.net";
-const invidious = "https://invidio.us";
-const youtubeRegex = /((www|m)\.)?youtube(-nocookie)?\.com/
+'use strict';
+
+const nitterDefault = 'https://nitter.net';
+const invidiousDefault = 'https://invidio.us';
+const youtubeRegex = /((www|m)\.)?youtube(-nocookie)?\.com/;
+const pathRegex = /^https?:\/\/[^\/]+([\S\s]*)/;
+
+let nitterInstance;
+let invidiousInstance;
+let disableNitter;
+let disableInvidious;
+
+chrome.storage.sync.get(
+  ['disableNitter', 'disableInvidious', 'nitterInstance', 'invidiousInstance'],
+  (result) => {
+    disableNitter = result.disableNitter;
+    disableInvidious = result.disableInvidious;
+    nitterInstance = result.nitterInstance || nitterDefault;
+    invidiousInstance = result.invidiousInstance || invidiousDefault;
+  }
+);
+
+chrome.storage.onChanged.addListener(function (changes) {
+  if ('nitterInstance' in changes) {
+    nitterInstance = changes.nitterInstance.newValue || nitterDefault;
+  }
+  if ('invidiousInstance' in changes) {
+    invidiousInstance = changes.invidiousInstance.newValue || invidiousDefault;
+  }
+  if ('disableNitter' in changes) {
+    disableNitter = changes.disableNitter.newValue;
+  }
+  if ('disableInvidious' in changes) {
+    disableInvidious = changes.disableInvidious.newValue;
+  }
+});
 
 chrome.webRequest.onBeforeRequest.addListener(
   function (details) {
     if (details.url.match(youtubeRegex)) {
-      return {
-        redirectUrl:
-          invidious + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]
-      };
+      if (!disableInvidious) {
+        return {
+          redirectUrl:
+            invidiousInstance + details.url.match(pathRegex)[1]
+        };
+      }
     } else {
-      return {
-        redirectUrl:
-          nitter + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]
-      };
+      if (!disableNitter) {
+        return {
+          redirectUrl:
+            nitterInstance + details.url.match(pathRegex)[1]
+        };
+      }
     }
   },
   {