aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/background
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-01-30 23:36:07 +0300
committerManeraKai <manerakai@protonmail.com>2022-01-30 23:36:07 +0300
commitfbdfe07425a46a6f42b50ad745ec5a701c7f1ebf (patch)
treef64597e9e30d91e482ebdfc91bbd5c10828d7974 /src/pages/background
parentmerging branches (diff)
downloadlibredirect-fbdfe07425a46a6f42b50ad745ec5a701c7f1ebf.zip
Cleaning code and changing naming schemes
Diffstat (limited to 'src/pages/background')
-rw-r--r--src/pages/background/background.js231
1 files changed, 102 insertions, 129 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 8776e9eb..f48b31a9 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -157,7 +157,7 @@ browser.storage.sync.get(
useFreeTube = result.useFreeTube;
invidiousRandomPool =
result.invidiousRandomPool
- ? result.invidiousRandomPool.split(",")
+ ? result.invidiousRandomPool
: commonHelper.filterInstances(invidiousInstances);
nitterInstance = result.nitterInstance;
@@ -186,108 +186,107 @@ browser.storage.sync.get(
);
browser.storage.onChanged.addListener((changes) => {
- if ("nitterInstance" in changes) {
+ if ("nitterInstance" in changes)
nitterInstance = changes.nitterInstance.newValue;
- }
- if ("invidiousInstance" in changes) {
+
+ if ("invidiousInstance" in changes)
invidiousInstance = changes.invidiousInstance.newValue;
- }
- if ("bibliogramInstance" in changes) {
+
+ if ("bibliogramInstance" in changes)
bibliogramInstance = changes.bibliogramInstance.newValue;
- }
- if ("osmInstance" in changes) {
+
+ if ("osmInstance" in changes)
osmInstance = changes.osmInstance.newValue || osmDefault;
- }
- if ("simplyTranslateInstance" in changes) {
- simplyTranslateInstance =
- changes.simplyTranslateInstance.newValue || simplyTranslateDefault;
- }
- if ("wikipediaInstance" in changes) {
+
+ if ("simplyTranslateInstance" in changes)
+ simplyTranslateInstance = changes.simplyTranslateInstance.newValue || simplyTranslateDefault;
+
+ if ("wikipediaInstance" in changes)
wikipediaInstance = changes.wikipediaInstance.newValue || wikipediaDefault;
- }
- if ("redditInstance" in changes) {
+
+ if ("redditInstance" in changes)
redditInstance = changes.redditInstance.newValue || redditDefault;
- }
+
if ("redditFrontend" in changes)
redditFrontend = changes.redditFrontend.newValue
- if ("scribeInstance" in changes) {
+ if ("scribeInstance" in changes)
scribeInstance = changes.scribeInstance.newValue || scribeDefault;
- }
- if ("searchEngineInstance" in changes) {
+
+ if ("searchEngineInstance" in changes)
searchEngineInstance = changes.searchEngineInstance.newValue;
- }
- if ("disableNitter" in changes) {
+
+ if ("disableNitter" in changes)
disableNitter = changes.disableNitter.newValue;
- }
- if ("disableScribe" in changes) {
+
+ if ("disableScribe" in changes)
disableScribe = changes.disableScribe.newValue;
- }
- if ("disableInvidious" in changes) {
+
+ if ("disableInvidious" in changes)
disableInvidious = changes.disableInvidious.newValue;
- }
- if ("disableBibliogram" in changes) {
+
+ if ("disableBibliogram" in changes)
disableBibliogram = changes.disableBibliogram.newValue;
- }
- if ("disableOsm" in changes) {
+
+ if ("disableOsm" in changes)
disableOsm = changes.disableOsm.newValue;
- }
- if ("disableReddit" in changes) {
+
+ if ("disableReddit" in changes)
disableReddit = changes.disableReddit.newValue;
- }
- if ("disableSearchEngine" in changes) {
+
+ if ("disableSearchEngine" in changes)
disableSearchEngine = changes.disableSearchEngine.newValue;
- }
- if ("disableSimplyTranslate" in changes) {
+
+ if ("disableSimplyTranslate" in changes)
disableSimplyTranslate = changes.disableSimplyTranslate.newValue;
- }
- if ("disableWikipedia" in changes) {
+
+ if ("disableWikipedia" in changes)
disableWikipedia = changes.disableWikipedia.newValue;
- }
- if ("alwaysProxy" in changes) {
+
+ if ("alwaysProxy" in changes)
alwaysProxy = changes.alwaysProxy.newValue;
- }
- if ("onlyEmbeddedVideo" in changes) {
+
+ if ("onlyEmbeddedVideo" in changes)
onlyEmbeddedVideo = changes.onlyEmbeddedVideo.newValue;
- }
- if ("videoQuality" in changes) {
+
+ if ("videoQuality" in changes)
videoQuality = changes.videoQuality.newValue;
- }
- if ("invidiousDarkMode" in changes) {
+
+ if ("invidiousDarkMode" in changes)
invidiousDarkMode = changes.invidiousDarkMode.newValue;
- }
- if ("invidiousVolume" in changes) {
+
+ if ("invidiousVolume" in changes)
invidiousVolume = changes.invidiousVolume.newValue;
- }
- if ("invidiousPlayerStyle" in changes) {
+
+ if ("invidiousPlayerStyle" in changes)
invidiousPlayerStyle = changes.invidiousPlayerStyle.newValue;
- }
- if ("invidiousSubtitles" in changes) {
+
+ if ("invidiousSubtitles" in changes)
invidiousSubtitles = changes.invidiousSubtitles.newValue;
- }
- if ("invidiousAutoplay" in changes) {
+
+ if ("invidiousAutoplay" in changes)
invidiousAutoplay = changes.invidiousAutoplay.newValue;
- }
- if ("useFreeTube" in changes) {
+
+ if ("useFreeTube" in changes)
useFreeTube = changes.useFreeTube.newValue;
- }
- if ("nitterRandomPool" in changes) {
- nitterRandomPool = changes.nitterRandomPool.newValue.split(",");
- }
- if ("invidiousRandomPool" in changes) {
- invidiousRandomPool = changes.invidiousRandomPool.newValue.split(",");
- }
- if ("bibliogramRandomPool" in changes) {
- bibliogramRandomPool = changes.bibliogramRandomPool.newValue.split(",");
- }
- if ("scribeRandomPool" in changes) {
- scribeRandomPool = changes.scribeRandomPool.newValue.split(",");
- }
- if ("exceptions" in changes) {
+
+ if ("nitterRandomPool" in changes)
+ nitterRandomPool = changes.nitterRandomPool.newValue;
+
+ if ("invidiousRandomPool" in changes)
+ invidiousRandomPool = changes.invidiousRandomPool.newValue;
+
+ if ("bibliogramRandomPool" in changes)
+ bibliogramRandomPool = changes.bibliogramRandomPool.newValue;
+
+ if ("scribeRandomPool" in changes)
+ scribeRandomPool = changes.scribeRandomPool.newValue;
+
+ if ("exceptions" in changes)
exceptions = changes.exceptions.newValue.map((e) => {
return new RegExp(e);
});
- }
+
});
function isException(url, initiator) {
@@ -524,29 +523,22 @@ function redirectReddit(url, initiator, type) {
return null;
console.info(url.host);
- if (url.host === "i.redd.it") {
- if (redditFrontend == 'libreddit')
- return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}/img${url.pathname}${url.search}`;
- if (redditFrontend == 'teddit')
- // As of 2021-04-09, redirects for teddit images are nontrivial:
- // - navigating to the image before ever navigating to its page causes
- // 404 error (probably needs fix on teddit project)
- // - some image links on teddit are very different
- // Therefore, don't support redirecting image links for teddit.
- return null;
-
- return null;
-
- } else if (url.host === "redd.it") {
+ if (url.host === "i.redd.it")
+ // As of 2021-04-09, redirects for teddit images are nontrivial:
+ // - navigating to the image before ever navigating to its page causes
+ // 404 error (probably needs fix on teddit project)
+ // - some image links on teddit are very different
+ // Therefore, don't support redirecting image links for teddit.
+ return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}/img${url.pathname}${url.search}`;
+ else if (url.host === "redd.it") {
if (redditFrontend == 'libreddit')
return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}${url.pathname}${url.search}`;
if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/))
// As of 2021-04-22, redirects for teddit redd.it/foo links don't work.
// It appears that adding "/comments" as a prefix works, so manually add
- // that prefix if it is missing. Even though redd.it/comments/foo links
+ // that prefix if it is missing. Even though redd.it/comments/foo links
// don't seem to work or exist, guard against affecting those kinds of
// paths.
- //
// Note the difference between redd.it/comments/foo (doesn't work) and
// teddit.net/comments/foo (works).
return `${redditInstance || commonHelper.getRandomInstance(redditInstances['teddit'])}/comments${url.pathname}${url.search}`;
@@ -559,9 +551,8 @@ function redirectReddit(url, initiator, type) {
}
function redirectMedium(url, initiator) {
- if (disableScribe || isException(url, initiator)) {
+ if (disableScribe || isException(url, initiator))
return null;
- }
if (url.pathname == "/")
return null;
@@ -573,23 +564,17 @@ function redirectMedium(url, initiator) {
scribeInstances.includes(initiator.origin) ||
mediumDomains.includes(initiator.host))
) {
- browser.storage.sync.set({
- redirectBypassFlag: true,
- });
+ browser.storage.sync.set({ redirectBypassFlag: true });
return null;
}
- return `${scribeInstance || commonHelper.getRandomInstance(scribeRandomPool)
- }${url.pathname}${url.search}`;
+ return `${scribeInstance || commonHelper.getRandomInstance(scribeRandomPool)}${url.pathname}${url.search}`;
}
function redirectSearchEngine(url, initiator) {
- if (disableSearchEngine || isException(url, initiator)) {
+ if (disableSearchEngine || isException(url, initiator))
return null;
- }
- const searchEngine =
- searchEngineInstance ||
- commonHelper.getRandomInstance(searchEngineInstances);
+ const searchEngine = searchEngineInstance || commonHelper.getRandomInstance(searchEngineInstances);
let search = "";
url.search
.slice(1)
@@ -601,17 +586,13 @@ function redirectSearchEngine(url, initiator) {
}
function redirectGoogleTranslate(url, initiator) {
- if (disableSimplyTranslate || isException(url, initiator)) {
- return null;
- }
+ if (disableSimplyTranslate || isException(url, initiator)) return null;
return `${simplyTranslateInstance}/${url.search}`;
}
function redirectWikipedia(url, initiator) {
- if (disableWikipedia || isException(url, initiator)) {
- return null;
- }
+ if (disableWikipedia || isException(url, initiator)) return null;
let GETArguments = [];
if (url.search.length > 0) {
let search = url.search.substring(1); //get rid of '?'
@@ -631,9 +612,9 @@ function redirectWikipedia(url, initiator) {
GETArguments.push(["mobileaction", "toggle_view_mobile"]);
//wikiless doesn't have mobile view support yet
}
- for (let i = 0; i < GETArguments.length; i++) {
+ for (let i = 0; i < GETArguments.length; i++)
link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
- }
+
if (
urlSplit[urlSplit.length - 1] == "org" &&
urlSplit[urlSplit.length - 2] == "wikipedia"
@@ -647,11 +628,10 @@ browser.webRequest.onBeforeRequest.addListener(
(details) => {
const url = new URL(details.url);
let initiator;
- if (details.originUrl) {
+ if (details.originUrl)
initiator = new URL(details.originUrl);
- } else if (details.initiator) {
+ else if (details.initiator)
initiator = new URL(details.initiator);
- }
let newUrl;
if (youtubeDomains.includes(url.host))
@@ -673,24 +653,13 @@ browser.webRequest.onBeforeRequest.addListener(
else if (url.host.match(wikipediaRegex))
newUrl = redirectWikipedia(url, initiator);
- let redirect;
if (newUrl) {
- redirect = {
- redirectUrl: newUrl
- }
- console.info(
- "Redirecting",
- `"${url.href}"`,
- "=>",
- `"${redirect.redirectUrl}"`
- );
- // console.info("Details", details);
+ console.info("Redirecting", url.href, "=>", newUrl);
+ return { redirectUrl: newUrl };
}
- return redirect;
- },
- {
- urls: ["<all_urls>"],
+ return null;
},
+ { urls: ["<all_urls>"], },
["blocking"]
);
@@ -729,10 +698,14 @@ browser.pageAction.onClicked.addListener((tab) => {
newUrl = 'https://twitter.com';
else if (bibliogramInstances.includes(protocolHost))
newUrl = 'https://instagram.com';
- else if (redditInstances['libreddit'].includes(protocolHost))
- newUrl = 'https://reddit.com';
- else if (redditInstances['teddit'].includes(protocolHost))
- newUrl = 'https://reddit.com';
+ else if (redditInstances['libreddit'].includes(protocolHost) || redditInstances['teddit'].includes(protocolHost)) {
+ if (tabUrl.pathname.startsWith('/img')) {
+ newUrl = "https://i.redd.it"
+ tabUrl.href = tabUrl.href.replace("/img", "")
+ }
+ else
+ newUrl = 'https://reddit.com';
+ }
else if (searchEngineInstances.includes(protocolHost))
newUrl = 'https://google.com';
else if (simplyTranslateInstances.includes(protocolHost))