aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-01-29 21:01:49 +0300
committerManeraKai <manerakai@protonmail.com>2022-01-29 21:01:55 +0300
commit0abec33eff7b3c7f8fbfbc033f9421a582f1a4ba (patch)
treeb15b9ade690efdf5dcdec80463f82c2bb7649142 /src
parentSmall fix (diff)
downloadlibredirect-0abec33eff7b3c7f8fbfbc033f9421a582f1a4ba.zip
Fixed bug in pageAction
Diffstat (limited to '')
-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/"
- redirect = {
- redirectUrl: redirectMedium(url, initiator),
- };
- } else if (url.href.match(googleSearchRegex)) {
- oldDomain = 'https://google.com/';
+ if (newUrl) {
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