about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/assets/javascripts/helpers/common.js3
-rw-r--r--src/pages/background/background.js157
2 files changed, 77 insertions, 83 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 3666b7dc..ee9a66db 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -22,7 +22,8 @@ function getInstances() {
     const nitterRandomPool = addHttps(filterInstances(instances.twitter)).join(',');
     const invidiousRandomPool = addHttps(filterInstances(instances.youtube)).join(',');
     const bibliogramRandomPool = addHttps(filterInstances(instances.instagram)).join(',');
-    browser.storage.sync.set({ nitterRandomPool, invidiousRandomPool, bibliogramRandomPool });
+    const scribeRandomPool = addHttps(filterInstances(instances.wikipedia)).join(',')
+    browser.storage.sync.set({ nitterRandomPool, invidiousRandomPool, bibliogramRandomPool, scribeRandomPool});
     return true;
   }
   return false;
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 1f2eccce..c94b61dc 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -577,7 +577,7 @@ function redirectGoogleTranslate(url, initiator) {
   return `${simplyTranslateInstance}/${url.search}`;
 }
 
-var oldDomain = '';
+
 
 function redirectWikipedia(url, initiator) {
   if (disableWikipedia || isException(url, initiator)) {
@@ -615,8 +615,6 @@ function redirectWikipedia(url, initiator) {
   else return null;
 }
 
-var tabList = []
-var redirecting = false;
 browser.webRequest.onBeforeRequest.addListener(
   (details) => {
     const url = new URL(details.url);
@@ -626,69 +624,43 @@ browser.webRequest.onBeforeRequest.addListener(
     } else if (details.initiator) {
       initiator = new URL(details.initiator);
     }
+
+    let newUrl;
+    if (youtubeDomains.includes(url.host))
+      newUrl = redirectYouTube(url, initiator, details.type)
+    else if (twitterDomains.includes(url.host))
+      newUrl = redirectTwitter(url, initiator);
+    else if (instagramDomains.includes(url.host))
+      newUrl = redirectInstagram(url, initiator, details.type);
+    else if (url.href.match(googleMapsRegex))
+      newUrl = redirectGoogleMaps(url, initiator);
+    else if (redditDomains.includes(url.host))
+      newUrl = redirectReddit(url, initiator, details.type);
+    else if (mediumDomains.some((rx) => rx.test(url.host)))
+      newUrl = redirectMedium(url, initiator);
+    else if (url.href.match(googleSearchRegex))
+      newUrl = redirectSearchEngine(url, initiator);
+    else if (googleTranslateDomains.includes(url.host))
+      newUrl = redirectGoogleTranslate(url, initiator);
+    else if (url.host.match(wikipediaRegex))
+      newUrl = redirectWikipedia(url, initiator);
+
     let redirect;
-    if (youtubeDomains.includes(url.host)) {
-      oldDomain = 'https://youtube.com/';
-      redirect = {
-        redirectUrl: redirectYouTube(url, initiator, details.type),
-      };
-    } else if (twitterDomains.includes(url.host)) {
-      oldDomain = 'https://twitter.com/';
-      redirect = {
-        redirectUrl: redirectTwitter(url, initiator),
-      };
-    } else if (instagramDomains.includes(url.host)) {
-      oldDomain = 'https://instagram.com/';
-      redirect = {
-        redirectUrl: redirectInstagram(url, initiator, details.type),
-      };
-    } else if (url.href.match(googleMapsRegex)) {
-      oldDomain = 'https://maps.google.com/';
-      redirect = {
-        redirectUrl: redirectGoogleMaps(url, initiator),
-      };
-    } else if (redditDomains.includes(url.host)) {
-      oldDomain = 'https://reddit.com/';
-      redirect = {
-        redirectUrl: redirectReddit(url, initiator, details.type),
-      };
-    } else if (mediumDomains.some((rx) => rx.test(url.host))) {
-      oldDomain = "https://medium.com/"
+    if (newUrl) {
       redirect = {
-        redirectUrl: redirectMedium(url, initiator),
-      };
-    } else if (url.href.match(googleSearchRegex)) {
-      oldDomain = 'https://google.com/';
-      redirect = {
-        redirectUrl: redirectSearchEngine(url, initiator),
-      };
-    } else if (googleTranslateDomains.includes(url.host)) {
-      oldDomain = 'https://translate.google.com/';
-      redirect = {
-        redirectUrl: redirectGoogleTranslate(url, initiator),
-      };
-    } else if (url.host.match(wikipediaRegex)) {
-      oldDomain = 'https://wikipedia.com/';
-      redirect = {
-        redirectUrl: redirectWikipedia(url, initiator),
-      };
-    }
-    if (redirect && redirect.redirectUrl) {
-      redirecting = true;
-      if (!tabList.includes(details.tabId))
-        tabList.push(details.tabId);
-
+        redirectUrl: newUrl
+      }
       console.info(
         "Redirecting",
         `"${url.href}"`,
         "=>",
         `"${redirect.redirectUrl}"`
       );
-      console.info("Details", details);
-    } else {
-      if (!redirecting)
-        tabList = tabList.filter((val) => val != details.tabId);
+      // console.info("Details", details);
     }
+
+
+
     return redirect;
   },
   {
@@ -697,14 +669,53 @@ browser.webRequest.onBeforeRequest.addListener(
   ["blocking"]
 );
 
-browser.tabs.onUpdated.addListener((tabId, _, __) => {
-  if (tabList.includes(tabId))
+browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => {
+  const url = new URL(changeInfo.url);
+  var protocolHost = `${url.protocol}//${url.host}`;
+  var mightyList = [];
+  mightyList.push(...invidiousInstances);
+  mightyList.push(...nitterInstances);
+  mightyList.push(...bibliogramInstances);
+  mightyList.push(...redditInstances);
+  mightyList.push(...searchEngineInstances);
+  mightyList.push(...simplyTranslateInstances);
+  mightyList.push(...scribeInstances);
+  mightyList.push(...wikipediaInstances);
+
+  if (mightyList.includes(protocolHost))
     browser.pageAction.show(tabId);
-})
 
-browser.webRequest.onCompleted.addListener(() => {
-  redirecting = false;
-}, { urls: ["<all_urls>"] });
+});
+
+
+browser.pageAction.onClicked.addListener((tab) => {
+  var tabUrl = new URL(tab.url);
+  var protocolHost = `${tabUrl.protocol}//${tabUrl.host}`;
+  var newUrl;
+  if (invidiousInstances.includes(protocolHost))
+    newUrl = 'https://youtube.com/';
+  else if (nitterInstances.includes(protocolHost))
+    newUrl = 'https://twitter.com/';
+  else if (bibliogramInstances.includes(protocolHost))
+    newUrl = 'https://instagram.com/';
+  else if (redditInstances.includes(protocolHost))
+    newUrl = 'https://reddit.com/';
+  else if (searchEngineInstances.includes(protocolHost))
+    newUrl = 'https://google.com/';
+  else if (simplyTranslateInstances.includes(protocolHost))
+    newUrl = 'https://translate.google.com/';
+  else if (scribeInstances.includes(protocolHost))
+    newUrl = 'https://medium.com/';
+  else if (wikipediaInstances.includes(protocolHost))
+    newUrl = 'https://wikipedia.com/';
+
+  if (newUrl)
+    browser.tabs.update({
+      url: tabUrl.href.replace(protocolHost, newUrl)
+    });
+});
+
+
 
 
 browser.runtime.onInstalled.addListener((details) => {
@@ -749,22 +760,4 @@ browser.runtime.onInstalled.addListener((details) => {
       }
     );
   }
-});
-
-
-function changeInstance() {
-  browser.tabs.query({
-    active: true,
-    lastFocusedWindow: true
-  }, function (tabs) {
-    var tabUrl = new URL(tabs[0].url);
-
-    if (oldDomain != '') {
-      browser.tabs.update({
-        url: tabUrl.href.replace(`${tabUrl.protocol}//${tabUrl.host}/`, oldDomain)
-      });
-    }
-  });
-}
-
-browser.pageAction.onClicked.addListener(changeInstance);
\ No newline at end of file
+});
\ No newline at end of file