about summary refs log tree commit diff stats
path: root/src/pages/background/background.js
diff options
context:
space:
mode:
authorFarbod <70021639+rimthekid@users.noreply.github.com>2021-12-03 18:21:39 +0400
committerGitHub <noreply@github.com>2021-12-03 18:21:39 +0400
commit26eef8843c2f2b0306917db52dbeb8cf87f2c341 (patch)
tree1cc800e11cbf32b4c0ff6368beb3bfa42345c2e7 /src/pages/background/background.js
parentMerge pull request #272 from Elaborendum/patch-1 (diff)
parentRestore accidentally deleted lines (diff)
downloadlibredirect-26eef8843c2f2b0306917db52dbeb8cf87f2c341.zip
Merge pull request #1 from Huy-Ngo/master
medium to scribe pr
Diffstat (limited to 'src/pages/background/background.js')
-rw-r--r--src/pages/background/background.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 9b8c3a13..741bf6a1 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -5,6 +5,7 @@ import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
 import youtubeHelper from "../../assets/javascripts/helpers/youtube.js";
 import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
 import mapsHelper from "../../assets/javascripts/helpers/google-maps.js";
+import mediumHelper from "../../assets/javascripts/helpers/medium.js";
 import redditHelper from "../../assets/javascripts/helpers/reddit.js";
 import searchHelper from "../../assets/javascripts/helpers/google-search.js";
 import googleTranslateHelper from "../../assets/javascripts/helpers/google-translate.js";
@@ -13,6 +14,9 @@ import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
 const nitterInstances = twitterHelper.redirects;
 const twitterDomains = twitterHelper.targets;
 const youtubeDomains = youtubeHelper.targets;
+const mediumDomains = mediumHelper.targets;
+const scribeInstances = mediumHelper.redirects;
+const scribeDefault = mediumHelper.redirects[0];
 const invidiousInstances = youtubeHelper.redirects;
 const instagramDomains = instagramHelper.targets;
 const bibliogramInstances = instagramHelper.redirects;
@@ -43,6 +47,7 @@ let disableInvidious;
 let disableBibliogram;
 let disableOsm;
 let disableReddit;
+let disableScribe;
 let disableSearchEngine;
 let disableSimplyTranslate;
 let disableWikipedia;
@@ -50,6 +55,7 @@ let nitterInstance;
 let invidiousInstance;
 let bibliogramInstance;
 let osmInstance;
+let scribeInstance;
 let redditInstance;
 let searchEngineInstance;
 let simplyTranslateInstance;
@@ -66,6 +72,7 @@ let useFreeTube;
 let nitterRandomPool;
 let invidiousRandomPool;
 let bibliogramRandomPool;
+let scribeRandomPool;
 let exceptions;
 
 window.browser = window.browser || window.chrome;
@@ -77,6 +84,7 @@ browser.storage.sync.get(
     "bibliogramInstance",
     "osmInstance",
     "redditInstance",
+    "scribeInstance",
     "searchEngineInstance",
     "simplyTranslateInstance",
     "wikipediaInstance",
@@ -85,6 +93,7 @@ browser.storage.sync.get(
     "disableBibliogram",
     "disableOsm",
     "disableReddit",
+    "disableScribe",
     "disableSearchEngine",
     "disableSimplyTranslate",
     "disableWikipedia",
@@ -100,6 +109,7 @@ browser.storage.sync.get(
     "nitterRandomPool",
     "invidiousRandomPool",
     "bibliogramRandomPool",
+    "scribeRandomPool",
     "exceptions",
   ],
   (result) => {
@@ -108,11 +118,13 @@ browser.storage.sync.get(
     bibliogramInstance = result.bibliogramInstance;
     osmInstance = result.osmInstance || osmDefault;
     redditInstance = result.redditInstance || redditDefault;
+    scribeInstance = result.scribeInstance;
     searchEngineInstance = result.searchEngineInstance;
     simplyTranslateInstance =
       result.simplyTranslateInstance || simplyTranslateDefault;
     wikipediaInstance = result.wikipediaInstance || wikipediaDefault;
     disableNitter = result.disableNitter;
+    disableScribe = result.disableScribe;
     disableInvidious = result.disableInvidious;
     disableBibliogram = result.disableBibliogram;
     disableOsm = result.disableOsm;
@@ -143,6 +155,9 @@ browser.storage.sync.get(
     bibliogramRandomPool = result.bibliogramRandomPool
       ? result.bibliogramRandomPool.split(",")
       : commonHelper.filterInstances(bibliogramInstances);
+    scribeRandomPool = result.scribeRandomPool
+      ? result.scribeRandomPool.split(",")
+      : commonHelper.filterInstances(scribeInstances);
   }
 );
 
@@ -169,12 +184,18 @@ browser.storage.onChanged.addListener((changes) => {
   if ("redditInstance" in changes) {
     redditInstance = changes.redditInstance.newValue || redditDefault;
   }
+  if ("scribeInstance" in changes) {
+    scribeInstance = changes.scribeInstance.newValue || scribeDefault;
+  }
   if ("searchEngineInstance" in changes) {
     searchEngineInstance = changes.searchEngineInstance.newValue;
   }
   if ("disableNitter" in changes) {
     disableNitter = changes.disableNitter.newValue;
   }
+  if ("disableScribe" in changes) {
+    disableScribe = changes.disableScribe.newValue;
+  }
   if ("disableInvidious" in changes) {
     disableInvidious = changes.disableInvidious.newValue;
   }
@@ -232,6 +253,9 @@ browser.storage.onChanged.addListener((changes) => {
   if ("bibliogramRandomPool" in changes) {
     bibliogramRandomPool = changes.bibliogramRandomPool.newValue.split(",");
   }
+  if ("scribeRandomPool" in changes) {
+    scribeRandomPool = changes.scribeRandomPool.newValue.split(",");
+  }
   if ("exceptions" in changes) {
     exceptions = changes.exceptions.newValue.map((e) => {
       return new RegExp(e);
@@ -515,6 +539,27 @@ function redirectReddit(url, initiator, type) {
   return `${redditInstance}${url.pathname}${url.search}`;
 }
 
+function redirectMedium(url, initiator) {
+  if (disableScribe || isException(url, initiator)) {
+    return null;
+  }
+  if (
+    isFirefox() &&
+    initiator &&
+    (initiator.origin === scribeInstance ||
+      scribeInstances.includes(initiator.origin) ||
+      mediumDomains.includes(initiator.host))
+  ) {
+    browser.storage.sync.set({
+      redirectBypassFlag: true,
+    });
+    return null;
+  }
+  return `${
+      scribeInstance || commonHelper.getRandomInstance(scribeRandomPool)
+    }${url.pathname}${url.search}`;
+}
+
 function redirectSearchEngine(url, initiator) {
   if (disableSearchEngine || isException(url, initiator)) {
     return null;
@@ -607,6 +652,10 @@ browser.webRequest.onBeforeRequest.addListener(
       redirect = {
         redirectUrl: redirectReddit(url, initiator, details.type),
       };
+    } else if (mediumDomains.includes(url.host)) {
+      redirect = {
+        redirectUrl: redirectMedium(url, initiator),
+      };
     } else if (url.href.match(googleSearchRegex)) {
       redirect = {
         redirectUrl: redirectSearchEngine(url, initiator),