aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/background
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
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')
-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),