aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-05-27 06:20:07 +0300
committerManeraKai <manerakai@protonmail.com>2022-05-27 06:20:07 +0300
commit29729a01cfdcaf9573f9688d762c8694b3d192b3 (patch)
tree10e991ea1db7efcc1bf88b765d7af33ba2c29dc3 /src
parentReverted version to 1.7 for now #274 (diff)
downloadlibredirect-29729a01cfdcaf9573f9688d762c8694b3d192b3.zip
Added support for chromium. Fixed redirect off offline #276
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/general.js76
-rw-r--r--src/assets/javascripts/helpers/imgur.js223
-rw-r--r--src/assets/javascripts/helpers/instagram.js171
-rw-r--r--src/assets/javascripts/helpers/lbry.js116
-rw-r--r--src/assets/javascripts/helpers/maps.js292
-rw-r--r--src/assets/javascripts/helpers/medium.js113
-rw-r--r--src/assets/javascripts/helpers/peertube.js125
-rw-r--r--src/assets/javascripts/helpers/reddit.js542
-rw-r--r--src/assets/javascripts/helpers/search.js622
-rw-r--r--src/assets/javascripts/helpers/sendTargets.js115
-rw-r--r--src/assets/javascripts/helpers/tiktok.js184
-rw-r--r--src/assets/javascripts/helpers/translate/set_lingva_preferences.js1
-rw-r--r--src/assets/javascripts/helpers/translate/translate.js374
-rw-r--r--src/assets/javascripts/helpers/twitter.js330
-rw-r--r--src/assets/javascripts/helpers/utils.js39
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js253
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js588
-rw-r--r--src/assets/javascripts/helpers/youtubeMusic.js100
-rw-r--r--src/manifest.json2
-rw-r--r--src/pages/background/background.js125
-rw-r--r--src/pages/background/incognito.js3
-rw-r--r--src/pages/popup/popup.js14
22 files changed, 2011 insertions, 2397 deletions
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
index 4c70997f..199d884c 100644
--- a/src/assets/javascripts/helpers/general.js
+++ b/src/assets/javascripts/helpers/general.js
@@ -2,46 +2,49 @@
window.browser = window.browser || window.chrome;
function isException(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- 'exceptions',
- r => {
- for (const item of r.exceptions.url)
- if (item == `${url.protocol}//${url.host}`) { resolve(true); return; }
- for (const item of r.exceptions.regex)
- if (new RegExp(item).test(url.href)) { resolve(true); return; }
- resolve(false); return;
- }
- )
- })
+ for (const item of exceptions.url)
+ if (item == `${url.protocol}//${url.host}`) return true;
+ for (const item of exceptions.regex)
+ if (new RegExp(item).test(url.href)) return true;
+ return false;
}
-function initDefaults() {
- return new Promise(async resolve => {
- await browser.storage.local.set({
- exceptions: {
- "url": [],
- "regex": [],
- },
- theme: "DEFAULT",
- popupFrontends: [
- "youtube",
- "twitter",
- "instagram",
- "tikTok",
- "imgur",
- "reddit",
- "search",
- "medium",
- "translate",
- "maps",
- ],
- autoRedirect: false,
- })
- resolve();
- })
+let exceptions;
+
+function init() {
+ browser.storage.local.get(
+ 'exceptions',
+ r => {
+ exceptions = r.exceptions;
+ }
+ )
}
+init();
+browser.storage.onChanged.addListener(init)
+
+async function initDefaults() {
+ await browser.storage.local.set({
+ exceptions: {
+ "url": [],
+ "regex": [],
+ },
+ theme: "DEFAULT",
+ popupFrontends: [
+ "youtube",
+ "twitter",
+ "instagram",
+ "tikTok",
+ "imgur",
+ "reddit",
+ "search",
+ "medium",
+ "translate",
+ "maps",
+ ],
+ autoRedirect: false,
+ })
+}
const allPopupFrontends = [
"youtube",
@@ -61,7 +64,6 @@ const allPopupFrontends = [
"sendTargets"
];
-
export default {
isException,
initDefaults,
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
index 69159b00..9f93f362 100644
--- a/src/assets/javascripts/helpers/imgur.js
+++ b/src/assets/javascripts/helpers/imgur.js
@@ -11,50 +11,57 @@ let redirects = {
"i2p": []
}
}
-function setRedirects(val) {
- redirects.rimgo = val;
- browser.storage.local.set({ imgurRedirects: redirects })
- console.log("imgurRedirects: ", val)
- for (const item of rimgoNormalRedirectsChecks)
- if (!redirects.rimgo.normal.includes(item)) {
- var index = rimgoNormalRedirectsChecks.indexOf(item);
- if (index !== -1) rimgoNormalRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ rimgoNormalRedirectsChecks });
+function setRedirects() {
+ return new Promise(resolve => {
+ fetch('/instances/data.json').then(response => response.text()).then(async data => {
+ let dataJson = JSON.parse(data);
+ redirects.rimgo = dataJson.rimgo;
- for (const item of rimgoTorRedirectsChecks)
- if (!redirects.rimgo.tor.includes(item)) {
- var index = rimgoTorRedirectsChecks.indexOf(item);
- if (index !== -1) rimgoTorRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ rimgoTorRedirectsChecks });
+ rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
+ rimgoTorRedirectsChecks = [...redirects.rimgo.tor];
+ rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p];
- for (const item of rimgoI2pRedirectsChecks)
- if (!redirects.rimgo.i2p.includes(item)) {
- var index = rimgoI2pRedirectsChecks.indexOf(item);
- if (index !== -1) rimgoI2pRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ rimgoI2pRedirectsChecks });
+ for (const instance of r.cloudflareList) {
+ const a = rimgoNormalRedirectsChecks.indexOf(instance);
+ if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1);
-}
+ const b = rimgoTorRedirectsChecks.indexOf(instance);
+ if (b > -1) rimgoTorRedirectsChecks.splice(b, 1);
-let
- disable,
- protocol;
+ const c = rimgoI2pRedirectsChecks.indexOf(instance);
+ if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1);
+ }
+
+ await browser.storage.local.set({
+ imgurRedirects: redirects,
+ rimgoNormalRedirectsChecks,
+ rimgoTorRedirectsChecks,
+ rimgoI2pRedirectsChecks,
+ });
+
+ resolve();
+ })
+ })
+}
let
+ disableImgur,
+ imgurRedirects,
+ imgurProtocol,
rimgoNormalRedirectsChecks,
+ rimgoNormalCustomRedirects,
rimgoTorRedirectsChecks,
- rimgoI2pRedirectsChecks;
+ rimgoTorCustomRedirects,
+ rimgoI2pRedirectsChecks,
+ rimgoI2pCustomRedirects;
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
+function init() {
+ return new Promise(async resolve => {
browser.storage.local.get(
[
"disableImgur",
"imgurRedirects",
"imgurProtocol",
-
"rimgoNormalRedirectsChecks",
"rimgoNormalCustomRedirects",
"rimgoTorRedirectsChecks",
@@ -63,107 +70,84 @@ function redirect(url, type, initiator) {
"rimgoI2pCustomRedirects",
],
r => {
- if (r.disableImgur) { resolve(); return; }
- if (url.pathname == "/") { resolve(); return; }
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media",].includes(type)) { resolve(); return; }
- if (
- initiator &&
- (
- [
- ...r.imgurRedirects.rimgo.normal,
- ...r.rimgoNormalCustomRedirects,
- ...r.rimgoTorCustomRedirects,
- ...r.rimgoI2pCustomRedirects,
- ].includes(initiator.origin) || targets.test(initiator.host))
- ) { resolve(); return; }
- if (!targets.test(url.href)) { resolve(); return; }
- if (url.pathname.includes("delete/")) { resolve(); return; }
- // https://imgur.com/gallery/s4WXQmn
- // https://imgur.com/a/H8M4rcp
- // https://imgur.com/gallery/gYiQLWy
- // https://imgur.com/gallery/cTRwaJU
- // https://i.imgur.com/CFSQArP.jpeg
- let instancesList;
- if (r.imgurProtocol == 'normal') instancesList = [...r.rimgoNormalRedirectsChecks, ...r.rimgoNormalCustomRedirects];
- if (r.imgurProtocol == 'tor') instancesList = [...r.rimgoTorRedirectsChecks, ...r.rimgoTorCustomRedirects];
- if (r.imgurProtocol == 'i2p') instancesList = [...r.rimgoI2pRedirectsChecks, ...r.rimgoI2pCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
-
- let randomInstance = utils.getRandomInstance(instancesList)
- resolve(`${randomInstance}${url.pathname}${url.search}`);
+ disableImgur = r.disableImgur;
+ imgurRedirects = r.imgurRedirects;
+ imgurProtocol = r.imgurProtocol;
+ rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks;
+ rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects;
+ rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks;
+ rimgoTorCustomRedirects = r.rimgoTorCustomRedirects;
+ rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks;
+ rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects;
+ resolve();
}
)
})
}
-async function reverse(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "imgurRedirects",
- "rimgoNormalCustomRedirects",
- "rimgoTorCustomRedirects",
- "rimgoI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (
- ![
- ...r.imgurRedirects.rimgo.normal,
- ...r.imgurRedirects.rimgo.tor,
- ...r.imgurRedirects.rimgo.i2p,
- ...r.rimgoNormalCustomRedirects,
- ...r.rimgoTorCustomRedirects,
- ...r.rimgoI2pCustomRedirects
- ].includes(protocolHost)
- ) { resolve(); return; }
- resolve(`https://imgur.com${url.pathname}${url.search}`);
- }
- )
- })
-}
+init();
+browser.storage.onChanged.addListener(init)
-function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "imgurRedirects",
- "imgurProtocol",
+// https://imgur.com/gallery/s4WXQmn
+// https://imgur.com/a/H8M4rcp
+// https://imgur.com/gallery/gYiQLWy
+// https://imgur.com/gallery/cTRwaJU
+// https://i.imgur.com/CFSQArP.jpeg
- "rimgoNormalRedirectsChecks",
- "rimgoNormalCustomRedirects",
+function all() {
+ return [
+ ...imgurRedirects.rimgo.normal,
+ ...imgurRedirects.rimgo.tor,
+ ...imgurRedirects.rimgo.i2p,
+ ...rimgoNormalCustomRedirects,
+ ...rimgoTorCustomRedirects,
+ ...rimgoI2pCustomRedirects,
+ ];
+}
- "rimgoTorRedirectsChecks",
- "rimgoTorCustomRedirects",
+function redirect(url, type, initiator) {
+ if (disableImgur) return;
+ if (url.pathname == "/") return;
+ if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media",].includes(type)) return;
+ if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return;
+ if (!targets.test(url.href)) return;
+ if (url.pathname.includes("delete/")) return;
- "rimgoI2pRedirectsChecks",
- "rimgoI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.imgurRedirects.rimgo.normal,
- ...r.imgurRedirects.rimgo.tor,
- ...r.imgurRedirects.rimgo.i2p,
+ let instancesList;
+ if (imgurProtocol == 'normal') instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
+ if (imgurProtocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
+ if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pRedirectsChecks, ...rimgoI2pCustomRedirects];
+ if (instancesList.length === 0) return;
- ...r.rimgoNormalCustomRedirects,
- ...r.rimgoTorCustomRedirects,
- ...r.rimgoI2pCustomRedirects,
- ].includes(protocolHost)) resolve();
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return `${randomInstance}${url.pathname}${url.search}`;
+}
- let instancesList;
- if (r.imgurProtocol == 'normal') instancesList = [...r.rimgoNormalCustomRedirects, ...r.rimgoNormalRedirectsChecks];
- else if (r.imgurProtocol == 'tor') instancesList = [...r.rimgoTorCustomRedirects, ...r.rimgoTorRedirectsChecks];
- else if (r.imgurProtocol == 'i2p') instancesList = [...r.rimgoI2pCustomRedirects, ...r.rimgoI2pRedirectsChecks];
+function reverse(url) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
+ resolve(`https://imgur.com${url.pathname}${url.search}`);
+ })
+}
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) resolve();
+function switchInstance(url) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
+ let instancesList;
+ if (imgurProtocol == 'normal') instancesList = [...rimgoNormalCustomRedirects, ...rimgoNormalRedirectsChecks];
+ else if (imgurProtocol == 'tor') instancesList = [...rimgoTorCustomRedirects, ...rimgoTorRedirectsChecks];
+ else if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- )
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
+
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
@@ -175,7 +159,7 @@ function initDefaults() {
browser.storage.local.get('cloudflareList', async r => {
rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
for (const instance of r.cloudflareList) {
- let i = rimgoNormalRedirectsChecks.indexOf(instance);
+ const i = rimgoNormalRedirectsChecks.indexOf(instance);
if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1);
}
await browser.storage.local.set({
@@ -200,7 +184,6 @@ function initDefaults() {
export default {
setRedirects,
-
redirect,
reverse,
initDefaults,
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index 8890ec19..f5c54b3a 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -26,126 +26,105 @@ function setRedirects(val) {
})
}
-let bibliogramNormalRedirectsChecks;
+let
+ disableInstagram,
+ instagramProtocol,
+ instagramRedirects,
+ bibliogramNormalRedirectsChecks,
+ bibliogramTorRedirectsChecks,
+ bibliogramNormalCustomRedirects,
+ bibliogramTorCustomRedirects;
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
+function init() {
+ return new Promise(async resolve => {
browser.storage.local.get(
[
"disableInstagram",
"instagramProtocol",
-
"instagramRedirects",
-
"bibliogramNormalRedirectsChecks",
"bibliogramTorRedirectsChecks",
-
"bibliogramNormalCustomRedirects",
"bibliogramTorCustomRedirects",
],
r => {
- if (r.disableInstagram) { resolve(); return; }
- if (
- initiator &&
- ([
- ...r.instagramRedirects.bibliogram.normal,
- ...r.instagramRedirects.bibliogram.tor,
- ...r.bibliogramNormalCustomRedirects,
- ...r.bibliogramTorCustomRedirects,
- ].includes(initiator.origin))
- ) { resolve('BYPASSTAB'); return; }
-
- if (!targets.includes(url.host)) { resolve(); return; }
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) { resolve(); return; }
-
- const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/];
- if (bypassPaths.some(rx => rx.test(url.pathname))) { resolve(); return; }
-
- let instancesList;
- if (r.instagramProtocol == 'normal') instancesList = [...r.bibliogramNormalRedirectsChecks, ...r.bibliogramNormalCustomRedirects];
- else if (r.instagramProtocol == 'tor') instancesList = [...r.bibliogramTorRedirectsChecks, ...r.bibliogramTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList)
-
- const reservedPaths = ["u", "p", "privacy",];
- if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1]))
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv"))
- resolve(`${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, '')}${url.search}`);
- else
- resolve(`${randomInstance}/u${url.pathname}${url.search}`); // Likely a user profile, redirect to '/u/...'
+ disableInstagram = r.disableInstagram;
+ instagramProtocol = r.instagramProtocol;
+ instagramRedirects = r.instagramRedirects;
+ bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
+ bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks;
+ bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
+ bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects;
+ resolve();
}
)
})
}
-function reverse(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "instagramRedirects",
- "bibliogramNormalCustomRedirects",
- "bibliogramTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (
- ![
- ...r.instagramRedirects.bibliogram.normal,
- ...r.instagramRedirects.bibliogram.tor,
- ...r.bibliogramNormalCustomRedirects,
- ...r.bibliogramTorCustomRedirects
- ].includes(protocolHost)
- ) { resolve(); return; }
- if (url.pathname.startsWith('/p')) {
- resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`); return;
- }
-
- if (url.pathname.startsWith('/u')) {
- resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`); return;
- }
+init();
+browser.storage.onChanged.addListener(init)
- resolve(`https://instagram.com${url.pathname}${url.search}`);
- }
- )
- })
+function all() {
+ return [
+ ...instagramRedirects.bibliogram.normal,
+ ...instagramRedirects.bibliogram.tor,
+ ...bibliogramNormalCustomRedirects,
+ ...bibliogramTorCustomRedirects,
+ ]
}
-function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "instagramRedirects",
- "instagramProtocol",
+function redirect(url, type, initiator) {
+ if (disableInstagram) return;
+ if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
+ if (!targets.includes(url.host)) return;
+ if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return;
- "bibliogramNormalRedirectsChecks",
- "bibliogramTorRedirectsChecks",
+ const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/];
+ if (bypassPaths.some(rx => rx.test(url.pathname))) return;
- "bibliogramNormalCustomRedirects",
- "bibliogramTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
+ let instancesList;
+ if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
+ else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
+ if (instancesList.length === 0) return;
+ let randomInstance = utils.getRandomInstance(instancesList)
- if (![
- ...r.instagramRedirects.bibliogram.normal,
- ...r.instagramRedirects.bibliogram.tor,
- ...r.bibliogramNormalCustomRedirects,
- ...r.bibliogramTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ const reservedPaths = ["u", "p", "privacy",];
+ if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1]))
+ return `${randomInstance}${url.pathname}${url.search}`;
+ if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv"))
+ return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, '')}${url.search}`;
+ else
+ return `${randomInstance}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
+}
- let instancesList;
- if (r.instagramProtocol == 'normal') instancesList = [...r.bibliogramNormalCustomRedirects, ...r.bibliogramNormalRedirectsChecks];
- else if (r.instagramProtocol == 'tor') instancesList = [...r.bibliogramTorCustomRedirects, ...r.bibliogramTorRedirectsChecks];
+function reverse(url) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ if (url.pathname.startsWith('/p')) resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`);
+ if (url.pathname.startsWith('/u')) resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`);
+ resolve(`https://instagram.com${url.pathname}${url.search}`);
+ })
+}
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- )
+function switchInstance(url) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
+
+ let instancesList;
+ if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalCustomRedirects, ...bibliogramNormalRedirectsChecks];
+ else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorCustomRedirects, ...bibliogramTorRedirectsChecks];
+
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
+
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
@@ -157,7 +136,7 @@ function initDefaults() {
browser.storage.local.get('cloudflareList', r => {
bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
for (const instance of r.cloudflareList) {
- let i = bibliogramNormalRedirectsChecks.indexOf(instance);
+ const i = bibliogramNormalRedirectsChecks.indexOf(instance);
if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1);
}
browser.storage.local.set({
@@ -180,9 +159,7 @@ function initDefaults() {
export default {
setRedirects,
-
reverse,
-
redirect,
initDefaults,
switchInstance,
diff --git a/src/assets/javascripts/helpers/lbry.js b/src/assets/javascripts/helpers/lbry.js
index e3f216d7..b44cc738 100644
--- a/src/assets/javascripts/helpers/lbry.js
+++ b/src/assets/javascripts/helpers/lbry.js
@@ -24,7 +24,6 @@ let redirects = {
function setRedirects(val) {
redirects.librarian = val;
browser.storage.local.set({ lbryTargetsRedirects: redirects })
- console.log("lbryTargetsRedirects: ", val)
for (const item of librarianNormalRedirectsChecks)
if (!redirects.librarian.normal.includes(item)) {
var index = librarianNormalRedirectsChecks.indexOf(item);
@@ -40,86 +39,86 @@ function setRedirects(val) {
browser.storage.local.set(librarianTorRedirectsChecks)
}
-let librarianNormalRedirectsChecks;
-let librarianTorRedirectsChecks;
+let
+ disableLbryTargets,
+ lbryTargetsProtocol,
+ lbryTargetsRedirects,
+ librarianNormalRedirectsChecks,
+ librarianNormalCustomRedirects,
+ librarianTorRedirectsChecks,
+ librarianTorCustomRedirects;
-async function switchInstance(url) {
+function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
- "lbryTargetsRedirects",
+ "disableLbryTargets",
"lbryTargetsProtocol",
-
+ "lbryTargetsRedirects",
"librarianNormalRedirectsChecks",
"librarianNormalCustomRedirects",
-
"librarianTorRedirectsChecks",
"librarianTorCustomRedirects",
],
r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...redirects.librarian.normal,
- ...redirects.librarian.tor,
- ...r.librarianNormalCustomRedirects,
- ...r.librarianTorCustomRedirects,
- ].includes(protocolHost)) resolve();
-
- let instancesList;
- if (r.lbryTargetsProtocol == 'normal') instancesList = [...r.librarianNormalRedirectsChecks, ...r.librarianNormalCustomRedirects];
- else if (r.lbryTargetsProtocol == 'tor') instancesList = [...r.librarianTorRedirectsChecks, ...r.librarianTorCustomRedirects];
-
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) resolve();
-
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
+ disableLbryTargets = r.disableLbryTargets;
+ lbryTargetsProtocol = r.lbryTargetsProtocol;
+ lbryTargetsRedirects = r.lbryTargetsRedirects;
+ librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks;
+ librarianNormalCustomRedirects = r.librarianNormalCustomRedirects;
+ librarianTorRedirectsChecks = r.librarianTorRedirectsChecks;
+ librarianTorCustomRedirects = r.librarianTorCustomRedirects;
+ resolve();
}
)
})
}
+init();
+browser.storage.onChanged.addListener(init)
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableLbryTargets",
- "lbryTargetsProtocol",
-
- "lbryTargetsRedirects",
+function all() {
+ return [
+ ...redirects.librarian.normal,
+ ...redirects.librarian.tor,
+ ...librarianNormalCustomRedirects,
+ ...librarianTorCustomRedirects,
+ ];
+}
- "librarianNormalRedirectsChecks",
- "librarianNormalCustomRedirects",
+function switchInstance(url) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
- "librarianTorRedirectsChecks",
- "librarianTorCustomRedirects",
- ],
- r => {
- if (r.disableLbryTargets) { resolve(); return; }
- if (initiator && (
- [
- ...r.lbryTargetsRedirects.librarian.normal,
- ...r.librarianNormalCustomRedirects,
- ...r.librarianTorCustomRedirects,
- ].includes(initiator.origin) ||
- targets.includes(initiator.host))
- ) { resolve(); return; }
- if (!targets.includes(url.host)) { resolve(); return; }
- if (type != "main_frame") { resolve(); return; }
+ let instancesList;
+ if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
+ else if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
- let instancesList;
- if (r.lbryTargetsProtocol == 'normal') instancesList = [...r.librarianNormalRedirectsChecks, ...r.librarianNormalCustomRedirects];
- if (r.lbryTargetsProtocol == 'tor') instancesList = [...r.librarianTorRedirectsChecks, ...r.librarianTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
+function redirect(url, type, initiator) {
+ if (disableLbryTargets) return;
+ if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
+ if (!targets.includes(url.host)) return;
+ if (type != "main_frame") return;
+
+ let instancesList;
+ if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
+ if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
+ if (instancesList.length === 0) return;
+
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return `${randomInstance}${url.pathname}${url.search}`;
+}
+
function initDefaults() {
return new Promise(resolve => {
browser.storage.local.get('cloudflareList', async r => {
@@ -152,7 +151,6 @@ function initDefaults() {
export default {
setRedirects,
switchInstance,
-
redirect,
initDefaults,
};
diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js
index 8d09121b..3ab5e2b6 100644
--- a/src/assets/javascripts/helpers/maps.js
+++ b/src/assets/javascripts/helpers/maps.js
@@ -18,189 +18,189 @@ let redirects = {
}
};
-function redirect(url, initiator) {
- return new Promise(
- resolve => {
- browser.storage.local.get(
- [
- "disableMaps",
- "mapsFrontend",
- "facilNormalRedirectsChecks",
- "facilNormalCustomRedirects",
- ],
- async r => {
- const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
- const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
- const placeRegex = /\/place\/(.*)\//;
- const travelModes = {
- driving: "fossgis_osrm_car",
- walking: "fossgis_osrm_foot",
- bicycling: "fossgis_osrm_bike",
- transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
- };
- const travelModesFacil = {
- driving: "car",
- walking: "pedestrian",
- bicycling: "bicycle",
- transit: "car", // not implemented on Facil, default to car.
- };
- const osmLayers = {
- none: "S",
- transit: "T",
- traffic: "S", // not implemented on OSM, default to standard.
- bicycling: "C",
- };
+let
+ disableMaps,
+ mapsFrontend,
+ facilNormalRedirectsChecks,
+ facilNormalCustomRedirects;
- async function addressToLatLng(address) {
- return new Promise(async resolve => {
- const xmlhttp = new XMLHttpRequest();
- xmlhttp.onreadystatechange = () => {
- if (xmlhttp.readyState === XMLHttpRequest.DONE) {
- if (xmlhttp.status === 200) {
- const json = JSON.parse(xmlhttp.responseText)[0];
+function init() {
+ browser.storage.local.get(
+ [
+ "disableMaps",
+ "mapsFrontend",
+ "facilNormalRedirectsChecks",
+ "facilNormalCustomRedirects",
+ ],
+ r => {
+ disableMaps = r.disableMaps;
+ mapsFrontend = r.mapsFrontend;
+ facilNormalRedirectsChecks = r.facilNormalRedirectsChecks;
+ facilNormalCustomRedirects = r.facilNormalCustomRedirects;
+ }
+ )
+}
- if (json) {
- console.log('json', json)
- resolve([
- `${json.lat},${json.lon}`,
- `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
- ]);
- }
- } else
- console.info("Error: Status is " + xmlhttp.status);
- }
- };
- xmlhttp.open(
- "GET",
- `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`,
- true
- );
- xmlhttp.send();
- })
- }
+init();
+browser.storage.onChanged.addListener(init)
- if (r.disableMaps) { resolve(); return; }
- if (initiator && initiator.host === "earth.google.com") { resolve(); return; }
- if (!url.href.match(targets)) { resolve(); return; }
+function redirect(url, initiator) {
+ const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
+ const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
+ const placeRegex = /\/place\/(.*)\//;
+ const travelModes = {
+ driving: "fossgis_osrm_car",
+ walking: "fossgis_osrm_foot",
+ bicycling: "fossgis_osrm_bike",
+ transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
+ };
+ const travelModesFacil = {
+ driving: "car",
+ walking: "pedestrian",
+ bicycling: "bicycle",
+ transit: "car", // not implemented on Facil, default to car.
+ };
+ const osmLayers = {
+ none: "S",
+ transit: "T",
+ traffic: "S", // not implemented on OSM, default to standard.
+ bicycling: "C",
+ };
- let randomInstance;
- if (r.mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
- if (r.mapsFrontend == 'facil') randomInstance = utils.getRandomInstance([...r.facilNormalRedirectsChecks, ...r.facilNormalCustomRedirects]);
+ function addressToLatLng(address) {
+ const xmlhttp = new XMLHttpRequest();
+ xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false);
+ xmlhttp.send();
+ if (xmlhttp.status === 200) {
+ const json = JSON.parse(xmlhttp.responseText)[0];
+ if (json) {
+ console.log('json', json)
+ return [
+ `${json.lat},${json.lon}`,
+ `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
+ ];
+ }
+ }
+ console.info("Error: Status is " + xmlhttp.status);
+ }
- let mapCentre = "#";
- let prefs = {};
+ if (disableMaps) return;
+ if (initiator && initiator.host === "earth.google.com") return;
+ if (!url.href.match(targets)) return;
- if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
- var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
- } else if (url.searchParams.has("center")) {
- var [lat, lon] = url.searchParams.get("center").split(",");
- var zoom = url.searchParams.get("zoom") ?? "17";
- }
+ let randomInstance;
+ if (mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
+ if (mapsFrontend == 'facil') randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]);
- if (lat && lon && zoom) {
- if (r.mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
- if (r.mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
- }
+ let mapCentre = "#";
+ let prefs = {};
- if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
+ if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
+ var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
+ } else if (url.searchParams.has("center")) {
+ var [lat, lon] = url.searchParams.get("center").split(",");
+ var zoom = url.searchParams.get("zoom") ?? "17";
+ }
- if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
- // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
- console.log("embed life");
+ if (lat && lon && zoom) {
+ if (mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
+ if (mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
+ }
- let query = "";
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.has("query");
+ if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
- else if (url.searchParams.has("pb"))
- try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
- catch (error) { console.error(error); } // Unable to find map marker in URL.
+ if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
+ // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
+ console.log("embed life");
- let [coords, boundingbox] = await addressToLatLng(query);
- prefs.bbox = boundingbox;
- prefs.marker = coords;
- prefs.layer = "mapnik";
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/export/embed.html?${prefsEncoded}`); return; }
+ let query = "";
+ if (url.searchParams.has("q")) query = url.searchParams.get("q");
+ else if (url.searchParams.has("query")) query = url.searchParams.has("query");
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${query}`); return; }
+ else if (url.searchParams.has("pb"))
+ try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
+ catch (error) { console.error(error); } // Unable to find map marker in URL.
- } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions
- // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
+ let [coords, boundingbox] = addressToLatLng(query);
+ prefs.bbox = boundingbox;
+ prefs.marker = coords;
+ prefs.layer = "mapnik";
+ let prefsEncoded = new URLSearchParams(prefs).toString();
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/export/embed.html?${prefsEncoded}`); return; }
- let travMod = url.searchParams.get("travelmode");
- if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${query}`); return; }
- let orgVal = url.searchParams.get("origin");
- let destVal = url.searchParams.get("destination");
+ } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions
+ // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
- let org; addressToLatLng(orgVal, a => org = a);
- let dest; addressToLatLng(destVal, a => dest = a);
- prefs.route = `${org};${dest}`;
+ let travMod = url.searchParams.get("travelmode");
+ if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/directions?${prefsEncoded}${mapCentre}`); return; }
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`); return; }
+ let orgVal = url.searchParams.get("origin");
+ let destVal = url.searchParams.get("destination");
- } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute
- // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
- console.log("data life");
+ let org; addressToLatLng(orgVal, a => org = a);
+ let dest; addressToLatLng(destVal, a => dest = a);
+ prefs.route = `${org};${dest}`;
- let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
+ let prefsEncoded = new URLSearchParams(prefs).toString();
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/directions?${prefsEncoded}${mapCentre}`); return; }
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`); return; }
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
+ } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute
+ // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
+ console.log("data life");
- } else if (url.searchParams.has("ll")) { // Get marker from ll param
- // https://maps.google.com/?ll=38.882147,-76.99017
- console.log("ll life");
+ let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
- const [mlat, mlon] = url.searchParams.get("ll").split(",");
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
- } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
- // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
- console.log("viewpoint life");
+ } else if (url.searchParams.has("ll")) { // Get marker from ll param
+ // https://maps.google.com/?ll=38.882147,-76.99017
+ console.log("ll life");
- const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
+ const [mlat, mlon] = url.searchParams.get("ll").split(",");
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
- } else { // Use query as search if present.
- console.log("normal life");
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
+ } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
+ // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
+ console.log("viewpoint life");
- let query;
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.get("query");
- else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
+ const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (query) {
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`); return; }
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk/${query}`); return; }
- }
- }
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; }
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; }
+ } else { // Use query as search if present.
+ console.log("normal life");
- let prefsEncoded = new URLSearchParams(prefs).toString();
- console.log("mapCentre", mapCentre);
- console.log("prefs", prefs);
- console.log("prefsEncoded", prefsEncoded);
- if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/${mapCentre}&${prefsEncoded}`); return; }
- if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk`); return; }
- }
- )
- })
+ let query;
+ if (url.searchParams.has("q")) query = url.searchParams.get("q");
+ else if (url.searchParams.has("query")) query = url.searchParams.get("query");
+ else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
+
+ let prefsEncoded = new URLSearchParams(prefs).toString();
+ if (query) {
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`); return; }
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk/${query}`); return; }
+ }
+ }
+
+ let prefsEncoded = new URLSearchParams(prefs).toString();
+ console.log("mapCentre", mapCentre);
+ console.log("prefs", prefs);
+ console.log("prefsEncoded", prefsEncoded);
+ if (mapsFrontend == 'osm') { resolve(`${randomInstance}/${mapCentre}&${prefsEncoded}`); return; }
+ if (mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk`); return; }
}
async function initDefaults() {
await browser.storage.local.set({
disableMaps: false,
mapsFrontend: 'osm',
-
mapsRedirects: redirects,
-
facilNormalRedirectsChecks: [...redirects.facil.normal],
facilNormalCustomRedirects: [],
})
diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js
index aabb32bf..0a028f07 100644
--- a/src/assets/javascripts/helpers/medium.js
+++ b/src/assets/javascripts/helpers/medium.js
@@ -49,10 +49,16 @@ function setRedirects(val) {
})
}
-let scribeNormalRedirectsChecks;
-let scribeTorRedirectsChecks;
+let
+ disableMedium,
+ mediumRedirects,
+ scribeNormalRedirectsChecks,
+ scribeNormalCustomRedirects,
+ scribeTorRedirectsChecks,
+ scribeTorCustomRedirects,
+ mediumProtocol;
-function redirect(url, type, initiator) {
+function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
@@ -65,63 +71,67 @@ function redirect(url, type, initiator) {
"mediumProtocol"
],
r => {
- if (r.disableMedium) { resolve(); return; }
- if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") { resolve(); return; }
- if (initiator && (
- [
- ...r.mediumRedirects.scribe.normal,
- ...r.mediumRedirects.scribe.tor,
- ...r.scribeNormalCustomRedirects,
- ...r.scribeTorCustomRedirects,
- ].includes(initiator.origin))) { resolve(); return; }
-
- if (!targets.some(rx => rx.test(url.host))) { resolve(); return; }
- if (/^\/($|@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) { resolve(); return; }
-
- let instancesList;
- if (r.mediumProtocol == 'normal') instancesList = [...r.scribeNormalRedirectsChecks, ...r.scribeNormalCustomRedirects];
- else if (r.mediumProtocol == 'tor') instancesList = [...r.scribeTorRedirectsChecks, ...r.scribeTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
-
- let randomInstance = utils.getRandomInstance(instancesList)
- resolve(`${randomInstance}${url.pathname}${url.search}`);
+ disableMedium = r.disableMedium;
+ mediumRedirects = r.mediumRedirects;
+ scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks;
+ scribeNormalCustomRedirects = r.scribeNormalCustomRedirects;
+ scribeTorRedirectsChecks = r.scribeTorRedirectsChecks;
+ scribeTorCustomRedirects = r.scribeTorCustomRedirects;
+ mediumProtocol = r.mediumProtocol;
+ resolve();
}
)
})
}
+
+init();
+browser.storage.onChanged.addListener(init)
+
+function redirect(url, type, initiator) {
+ if (disableMedium) return;
+ if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return;
+ if (initiator && (
+ [
+ ...mediumRedirects.scribe.normal,
+ ...mediumRedirects.scribe.tor,
+ ...scribeNormalCustomRedirects,
+ ...scribeTorCustomRedirects,
+ ].includes(initiator.origin))) return;
+
+ if (!targets.some(rx => rx.test(url.host))) return;
+ if (/^\/($|@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return;
+
+ let instancesList;
+ if (mediumProtocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
+ else if (mediumProtocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
+ if (instancesList.length === 0) return;
+
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`;
+}
+
function switchInstance(url) {
return new Promise(resolve => {
- browser.storage.local.get(
- [
- "mediumRedirects",
- "mediumProtocol",
-
- "scribeNormalRedirectsChecks",
- "scribeNormalCustomRedirects",
- "scribeTorRedirectsChecks",
- "scribeTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.mediumRedirects.scribe.tor,
- ...r.mediumRedirects.scribe.normal,
+ let protocolHost = utils.protocolHost(url);
+ const all = [
+ ...mediumRedirects.scribe.tor,
+ ...mediumRedirects.scribe.normal,
- ...r.scribeNormalCustomRedirects,
- ...r.scribeTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ ...scribeNormalCustomRedirects,
+ ...scribeTorCustomRedirects,
+ ];
+ if (!all.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (r.mediumProtocol == 'normal') instancesList = [...r.scribeNormalCustomRedirects, ...r.scribeNormalRedirectsChecks];
- else if (r.mediumProtocol == 'tor') instancesList = [...r.scribeTorCustomRedirects, ...r.scribeTorRedirectsChecks];
+ let instancesList;
+ if (mediumProtocol == 'normal') instancesList = [...scribeNormalCustomRedirects, ...scribeNormalRedirectsChecks];
+ else if (mediumProtocol == 'tor') instancesList = [...scribeTorCustomRedirects, ...scribeTorRedirectsChecks];
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
@@ -157,8 +167,7 @@ function initDefaults() {
export default {
setRedirects,
-
redirect,
- initDefaults,
switchInstance,
+ initDefaults,
};
diff --git a/src/assets/javascripts/helpers/peertube.js b/src/assets/javascripts/helpers/peertube.js
index ba06b8d8..cf532e23 100644
--- a/src/assets/javascripts/helpers/peertube.js
+++ b/src/assets/javascripts/helpers/peertube.js
@@ -6,7 +6,7 @@ let redirects = {
"simpleertube": {
"normal": [
"https://tube.simple-web.org",
- "https://tube.fr.tild3.org",
+ "https://tube.ftild3.org",
"https://stube.alefvanoon.xyz",
"https://st.phreedom.club",
"https://simpleertube.esmailelbob.xyz",
@@ -31,94 +31,93 @@ function setRedirects(val) {
}
browser.storage.local.set({ simpleertubeTorRedirectsChecks })
}
+
let
+ disablePeertubeTargets,
+ peertubeRedirects,
simpleertubeNormalRedirectsChecks,
- simpleertubeTorRedirectsChecks;
-
+ simpleertubeNormalCustomRedirects,
+ simpleertubeTorRedirectsChecks,
+ simpleertubeTorCustomRedirects,
+ peerTubeTargets,
+ peertubeTargetsProtocol;
-async function switchInstance(url) {
+function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
- "peerTubeTargets",
- "peertubeTargetsProtocol",
-
+ "disablePeertubeTargets",
+ "peertubeRedirects",
"simpleertubeNormalRedirectsChecks",
"simpleertubeNormalCustomRedirects",
-
"simpleertubeTorRedirectsChecks",
"simpleertubeTorCustomRedirects",
+ "peerTubeTargets",
+ "peertubeTargetsProtocol"
],
r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...redirects.simpleertube.normal,
- ...redirects.simpleertube.tor,
- ...r.simpleertubeNormalCustomRedirects,
- ...r.simpleertubeTorCustomRedirects,
- ].includes(protocolHost)) resolve();
-
- let instancesList;
- if (r.peertubeTargetsProtocol == 'normal') instancesList = [...r.simpleertubeNormalRedirectsChecks, ...r.simpleertubeNormalCustomRedirects];
- else if (r.peertubeTargetsProtocol == 'tor') instancesList = [...r.simpleertubeTorRedirectsChecks, ...r.simpleertubeTorCustomRedirects];
-
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) resolve()
-
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
+ disablePeertubeTargets = r.disablePeertubeTargets;
+ peertubeRedirects = r.peertubeRedirects;
+ simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks;
+ simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects;
+ simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks;
+ simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects;
+ peerTubeTargets = r.peerTubeTargets;
+ peertubeTargetsProtocol = r.peertubeTargetsProtocol;
+ resolve();
}
)
})
}
+init();
+browser.storage.onChanged.addListener(init)
+
+function all() {
+ return [
+ ...redirects.simpleertube.normal,
+ ...redirects.simpleertube.tor,
+ ...simpleertubeNormalCustomRedirects,
+ ...simpleertubeTorCustomRedirects,
+ ];
+}
+
function redirect(url, type, initiator) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disablePeertubeTargets",
+ if (disablePeertubeTargets) return;
+ if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return;
+ let protocolHost = utils.protocolHost(url);
+ if (!peerTubeTargets.includes(protocolHost)) return;
+ if (type != "main_frame") return;
- "peertubeRedirects",
+ let instancesList;
+ if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
+ if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
+ if (instancesList.length === 0) return;
- "simpleertubeNormalRedirectsChecks",
- "simpleertubeNormalCustomRedirects",
+ const randomInstance = utils.getRandomInstance(instancesList);
+ if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance;
+ return `${randomInstance}/${url.host}${url.pathname}${url.search}`;
+}
- "simpleertubeTorRedirectsChecks",
- "simpleertubeTorCustomRedirects",
+function switchInstance(url) {
+ return new Promise(resolve => {
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
- "peerTubeTargets",
- "peertubeTargetsProtocol"
- ],
- r => {
- if (r.disablePeertubeTargets) { resolve(); return; }
- if (
- initiator &&
- (
- [
- ...r.peertubeRedirects.simpleertube.normal,
- ...r.simpleertubeNormalCustomRedirects
- ].includes(initiator.origin) ||
- r.peerTubeTargets.includes(initiator.host)
- )
- ) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (!r.peerTubeTargets.includes(protocolHost)) { resolve(); return; }
- if (type != "main_frame") { resolve(); return; }
+ let instancesList;
+ if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
+ else if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- let instancesList;
- if (r.peertubeTargetsProtocol == 'normal') instancesList = [...r.simpleertubeNormalRedirectsChecks, ...r.simpleertubeNormalCustomRedirects];
- if (r.peertubeTargetsProtocol == 'tor') instancesList = [...r.simpleertubeTorRedirectsChecks, ...r.simpleertubeTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- if (url.host == 'search.joinpeertube.org') { resolve(randomInstance); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- resolve(`${randomInstance}/${url.host}${url.pathname}${url.search}`);
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
-async function initDefaults() {
+
+function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 3b5c7d88..0735ba64 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -37,353 +37,289 @@ function setRedirects(val) {
}
let
+ disableReddit,
+ redditFrontend,
+ redditRedirects,
+ redditProtocol,
libredditNormalRedirectsChecks,
- tedditNormalRedirectsChecks;
+ libredditNormalCustomRedirects,
+ libredditTorRedirectsChecks,
+ libredditTorCustomRedirects,
+ tedditNormalRedirectsChecks,
+ tedditNormalCustomRedirects,
+ tedditTorRedirectsChecks,
+ tedditTorCustomRedirects;
-function initLibredditCookies(test, from) {
+function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
+ "disableReddit",
+ "redditFrontend",
+ "redditRedirects",
"redditProtocol",
"libredditNormalRedirectsChecks",
"libredditNormalCustomRedirects",
"libredditTorRedirectsChecks",
"libredditTorCustomRedirects",
+ "tedditNormalRedirectsChecks",
+ "tedditNormalCustomRedirects",
+ "tedditTorRedirectsChecks",
+ "tedditTorCustomRedirects",
],
r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.libredditNormalRedirectsChecks,
- ...r.libredditTorRedirectsChecks,
- ...r.libredditNormalCustomRedirects,
- ...r.libredditTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
- else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
- for (const to of checkedInstances) {
- utils.copyCookie('libreddit', from, to, "theme");
- utils.copyCookie('libreddit', from, to, "front_page");
- utils.copyCookie('libreddit', from, to, "layout");
- utils.copyCookie('libreddit', from, to, "wide");
- utils.copyCookie('libreddit', from, to, "post_sort");
- utils.copyCookie('libreddit', from, to, "comment_sort");
- utils.copyCookie('libreddit', from, to, "show_nsfw");
- utils.copyCookie('libreddit', from, to, "autoplay_videos");
- utils.copyCookie('libreddit', from, to, "use_hls");
- utils.copyCookie('libreddit', from, to, "hide_hls_notification");
- }
- }
- resolve(true);
+ disableReddit = r.disableReddit;
+ redditFrontend = r.redditFrontend;
+ redditRedirects = r.redditRedirects;
+ redditProtocol = r.redditProtocol;
+ libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks;
+ libredditNormalCustomRedirects = r.libredditNormalCustomRedirects;
+ libredditTorRedirectsChecks = r.libredditTorRedirectsChecks;
+ libredditTorCustomRedirects = r.libredditTorCustomRedirects;
+ tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks;
+ tedditNormalCustomRedirects = r.tedditNormalCustomRedirects;
+ tedditTorRedirectsChecks = r.tedditTorRedirectsChecks;
+ tedditTorCustomRedirects = r.tedditTorCustomRedirects;
+ resolve();
}
)
})
+}
+
+init();
+browser.storage.onChanged.addListener(init)
+function initLibredditCookies(test, from) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(from);
+ if (![
+ ...libredditNormalRedirectsChecks,
+ ...libredditTorRedirectsChecks,
+ ...libredditNormalCustomRedirects,
+ ...libredditTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
+
+ if (!test) {
+ let checkedInstances;
+ if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
+ else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
+ for (const to of checkedInstances) {
+ utils.copyCookie('libreddit', from, to, "theme");
+ utils.copyCookie('libreddit', from, to, "front_page");
+ utils.copyCookie('libreddit', from, to, "layout");
+ utils.copyCookie('libreddit', from, to, "wide");
+ utils.copyCookie('libreddit', from, to, "post_sort");
+ utils.copyCookie('libreddit', from, to, "comment_sort");
+ utils.copyCookie('libreddit', from, to, "show_nsfw");
+ utils.copyCookie('libreddit', from, to, "autoplay_videos");
+ utils.copyCookie('libreddit', from, to, "use_hls");
+ utils.copyCookie('libreddit', from, to, "hide_hls_notification");
+ }
+ }
+ resolve(true);
+ })
}
function setLibredditCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "redditProtocol",
- "disableReddit",
- "redditFrontend",
- "libredditNormalRedirectsChecks",
- "libredditNormalCustomRedirects",
- "libredditTorRedirectsChecks",
- "libredditTorCustomRedirects",
- ],
- r => {
- if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]
- else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('libreddit', to, "theme");
- utils.getCookiesFromStorage('libreddit', to, "front_page");
- utils.getCookiesFromStorage('libreddit', to, "layout");
- utils.getCookiesFromStorage('libreddit', to, "wide");
- utils.getCookiesFromStorage('libreddit', to, "post_sort");
- utils.getCookiesFromStorage('libreddit', to, "comment_sort");
- utils.getCookiesFromStorage('libreddit', to, "show_nsfw");
- utils.getCookiesFromStorage('libreddit', to, "autoplay_videos");
- utils.getCookiesFromStorage('libreddit', to, "use_hls");
- utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
- }
- resolve();
- }
- )
+ return new Promise(async resolve => {
+ await init();
+ if (disableReddit || redditFrontend != 'libreddit' || redditProtocol === undefined) { resolve(); return; }
+ let checkedInstances;
+ if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('libreddit', to, "theme");
+ utils.getCookiesFromStorage('libreddit', to, "front_page");
+ utils.getCookiesFromStorage('libreddit', to, "layout");
+ utils.getCookiesFromStorage('libreddit', to, "wide");
+ utils.getCookiesFromStorage('libreddit', to, "post_sort");
+ utils.getCookiesFromStorage('libreddit', to, "comment_sort");
+ utils.getCookiesFromStorage('libreddit', to, "show_nsfw");
+ utils.getCookiesFromStorage('libreddit', to, "autoplay_videos");
+ utils.getCookiesFromStorage('libreddit', to, "use_hls");
+ utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
+ }
+ resolve();
})
}
function initTedditCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "redditProtocol",
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.tedditNormalRedirectsChecks,
- ...r.tedditTorRedirectsChecks,
- ...r.tedditNormalCustomRedirects,
- ...r.tedditTorCustomRedirects,
- ].includes(protocolHost)) resolve();
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(from);
+ if (![
+ ...tedditNormalRedirectsChecks,
+ ...tedditTorRedirectsChecks,
+ ...tedditNormalCustomRedirects,
+ ...tedditTorCustomRedirects,
+ ].includes(protocolHost)) resolve();
- if (!test) {
- let checkedInstances;
- if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects]
- else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('teddit', from, to, 'collapse_child_comments')
- utils.copyCookie('teddit', from, to, 'domain_instagram')
- utils.copyCookie('teddit', from, to, 'domain_twitter')
- utils.copyCookie('teddit', from, to, 'domain_youtube')
- utils.copyCookie('teddit', from, to, 'flairs')
- utils.copyCookie('teddit', from, to, 'highlight_controversial')
- utils.copyCookie('teddit', from, to, 'nsfw_enabled')
- utils.copyCookie('teddit', from, to, 'post_media_max_height')
- utils.copyCookie('teddit', from, to, 'show_upvoted_percentage')
- utils.copyCookie('teddit', from, to, 'show_upvotes')
- utils.copyCookie('teddit', from, to, 'theme')
- utils.copyCookie('teddit', from, to, 'videos_muted')
- }
- }
- resolve(true);
+ if (!test) {
+ let checkedInstances;
+ if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.copyCookie('teddit', from, to, 'collapse_child_comments')
+ utils.copyCookie('teddit', from, to, 'domain_instagram')
+ utils.copyCookie('teddit', from, to, 'domain_twitter')
+ utils.copyCookie('teddit', from, to, 'domain_youtube')
+ utils.copyCookie('teddit', from, to, 'flairs')
+ utils.copyCookie('teddit', from, to, 'highlight_controversial')
+ utils.copyCookie('teddit', from, to, 'nsfw_enabled')
+ utils.copyCookie('teddit', from, to, 'post_media_max_height')
+ utils.copyCookie('teddit', from, to, 'show_upvoted_percentage')
+ utils.copyCookie('teddit', from, to, 'show_upvotes')
+ utils.copyCookie('teddit', from, to, 'theme')
+ utils.copyCookie('teddit', from, to, 'videos_muted')
}
- )
+ }
+ resolve(true);
})
}
function setTedditCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "redditProtocol",
- "disableReddit",
- "redditFrontend",
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- ],
- r => {
- if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects]
- else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
- utils.getCookiesFromStorage('teddit', to, 'domain_instagram')
- utils.getCookiesFromStorage('teddit', to, 'domain_twitter')
- utils.getCookiesFromStorage('teddit', to, 'domain_youtube')
- utils.getCookiesFromStorage('teddit', to, 'flairs')
- utils.getCookiesFromStorage('teddit', to, 'highlight_controversial')
- utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
- utils.getCookiesFromStorage('teddit', to, 'post_media_max_height')
- utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
- utils.getCookiesFromStorage('teddit', to, 'show_upvotes')
- utils.getCookiesFromStorage('teddit', to, 'theme')
- utils.getCookiesFromStorage('teddit', to, 'videos_muted')
- }
- resolve();
- }
- )
+ return new Promise(async resolve => {
+ await init();
+ if (disableReddit || redditFrontend != 'teddit' || redditProtocol === undefined) { resolve(); return; }
+ let checkedInstances;
+ if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
+ utils.getCookiesFromStorage('teddit', to, 'domain_instagram')
+ utils.getCookiesFromStorage('teddit', to, 'domain_twitter')
+ utils.getCookiesFromStorage('teddit', to, 'domain_youtube')
+ utils.getCookiesFromStorage('teddit', to, 'flairs')
+ utils.getCookiesFromStorage('teddit', to, 'highlight_controversial')
+ utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
+ utils.getCookiesFromStorage('teddit', to, 'post_media_max_height')
+ utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
+ utils.getCookiesFromStorage('teddit', to, 'show_upvotes')
+ utils.getCookiesFromStorage('teddit', to, 'theme')
+ utils.getCookiesFromStorage('teddit', to, 'videos_muted')
+ }
+ resolve();
})
}
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableReddit",
- "redditFrontend",
- "redditRedirects",
- "redditProtocol",
-
- "libredditNormalRedirectsChecks",
- "libredditNormalCustomRedirects",
- "libredditTorRedirectsChecks",
- "libredditTorCustomRedirects",
-
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- ],
- r => {
- // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
- // https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
-
- // https://teddit.net/vids/1mq8d0ma3yk81.mp4
- // https://teddit.net/pics/w:null_4v3t1vgvrzk81.png
-
-
- // redd.it/t5379n
- // https://v.redd.it/z08avb339n801/DASH_1_2_M
- // https://i.redd.it/bfkhs659tzk81.jpg
+function all() {
+ return [
+ ...redditRedirects.libreddit.normal,
+ ...redditRedirects.libreddit.tor,
+ ...redditRedirects.teddit.normal,
+ ...redditRedirects.teddit.tor,
+ ...libredditNormalCustomRedirects,
+ ...libredditTorCustomRedirects,
+ ...tedditNormalCustomRedirects,
+ ...tedditTorCustomRedirects,
+ ];
+}
- if (r.disableReddit) { resolve(); return; }
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
+// https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
+// https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
- if (
- initiator &&
- [
- ...r.redditRedirects.libreddit.normal,
- ...r.redditRedirects.libreddit.tor,
- ...r.redditRedirects.teddit.normal,
- ...r.redditRedirects.teddit.tor,
- ...r.libredditNormalCustomRedirects,
- ...r.libredditTorCustomRedirects,
- ...r.tedditNormalCustomRedirects,
- ...r.tedditTorCustomRedirects,
- ].includes(initiator.origin)
- ) { resolve('BYPASSTAB'); return; }
+// https://teddit.net/vids/1mq8d0ma3yk81.mp4
+// https://teddit.net/pics/w:null_4v3t1vgvrzk81.png
- const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
- if (type !== "main_frame" || url.pathname.match(bypassPaths)) { resolve(); return; }
- let libredditInstancesList;
- let tedditInstancesList;
- if (r.redditProtocol == 'normal') {
- libredditInstancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
- tedditInstancesList = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects];
- } else if (r.redditProtocol == 'tor') {
- libredditInstancesList = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
- tedditInstancesList = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects];
- }
+// redd.it/t5379n
+// https://v.redd.it/z08avb339n801/DASH_1_2_M
+// https://i.redd.it/bfkhs659tzk81.jpg
+function redirect(url, type, initiator) {
+ if (disableReddit) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
+ if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
+ const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
+ if (type !== "main_frame" || url.pathname.match(bypassPaths)) return;
- if (url.host === "i.redd.it") {
- if (r.redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) { resolve(); return; }
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- resolve(`${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.reddit}`); return;
- }
- if (r.redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) { resolve(); return; }
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- resolve(`${libredditRandomInstance}/img${url.pathname}${url.reddit}`); return;
- }
- }
- else if (url.host === "redd.it") {
- if (r.redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (libredditInstancesList.length === 0) { resolve(); return; }
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- // https://redd.it/foo => https://libredd.it/comments/foo
- resolve(`${libredditRandomInstance}/comments${url.pathname}${url.reddit}`); return;
- }
- if (r.redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (tedditInstancesList.length === 0) { resolve(); return; }
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- // https://redd.it/foo => https://teddit.net/comments/foo
- resolve(`${tedditRandomInstance}/comments${url.pathname}${url.reddit}`); return;
- }
- }
- else if (url.host === 'preview.redd.it') {
- if (r.redditFrontend == 'teddit') {
- { resolve(); return; }
- }
- if (r.redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) { resolve(); return; }
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- resolve(`${libredditRandomInstance}/preview/pre${url.pathname}${url.reddit}`); return;
- }
- }
+ let libredditInstancesList;
+ let tedditInstancesList;
+ if (redditProtocol == 'normal') {
+ libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
+ tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
+ } else if (redditProtocol == 'tor') {
+ libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
+ tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
+ }
- let randomInstance;
- if (r.redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) { resolve(); return; }
- randomInstance = utils.getRandomInstance(libredditInstancesList);
- }
- if (r.redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) { resolve(); return; }
- randomInstance = utils.getRandomInstance(tedditInstancesList);
- }
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
- })
-}
+ if (url.host === "i.redd.it") {
+ if (redditFrontend == 'teddit') {
+ if (tedditInstancesList.length === 0) return;
+ let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
+ return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.reddit}`;
+ }
+ if (redditFrontend == 'libreddit') {
+ if (libredditInstancesList.length === 0) return;
+ let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
+ return `${libredditRandomInstance}/img${url.pathname}${url.reddit}`
+ }
+ }
+ else if (url.host === "redd.it") {
+ if (redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
+ if (libredditInstancesList.length === 0) return;
+ let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
+ // https://redd.it/foo => https://libredd.it/comments/foo
+ return `${libredditRandomInstance}/comments${url.pathname}${url.reddit}`;
+ }
+ if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
+ if (tedditInstancesList.length === 0) return;
+ let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
+ // https://redd.it/foo => https://teddit.net/comments/foo
+ return `${tedditRandomInstance}/comments${url.pathname}${url.reddit}`
+ }
+ }
+ else if (url.host === 'preview.redd.it') {
+ if (redditFrontend == 'teddit') return;
+ if (redditFrontend == 'libreddit') {
+ if (libredditInstancesList.length === 0) return;
+ const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
+ return `${libredditRandomInstance}/preview/pre${url.pathname}${url.reddit}`;
+ }
+ }
-function reverse(url) {
- let protocolHost = utils.protocolHost(url);
- if (
- ![...redirects.nitter.normal,
- ...redirects.nitter.tor,
- ...nitterNormalCustomRedirects,
- ...nitterTorCustomRedirects].includes(protocolHost)
- ) return;
- if (url.pathname.includes('/pics/w:null_'))
- return `https://reddit.com${url.pathname}${url.reddit}`;
+ let randomInstance;
+ if (redditFrontend == 'libreddit') {
+ if (libredditInstancesList.length === 0) return;
+ randomInstance = utils.getRandomInstance(libredditInstancesList);
+ }
+ if (redditFrontend == 'teddit') {
+ if (tedditInstancesList.length === 0) return;
+ randomInstance = utils.getRandomInstance(tedditInstancesList);
+ }
+ return `${randomInstance}${url.pathname}${url.search}`;
}
function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "redditRedirects",
- "redditFrontend",
- "redditProtocol",
-
- "libredditNormalRedirectsChecks",
- "libredditNormalCustomRedirects",
- "libredditTorRedirectsChecks",
- "libredditTorCustomRedirects",
-
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.redditRedirects.libreddit.normal,
- ...r.redditRedirects.libreddit.tor,
-
- ...r.libredditNormalCustomRedirects,
- ...r.libredditTorCustomRedirects,
-
- ...r.redditRedirects.teddit.normal,
- ...r.redditRedirects.teddit.tor,
-
- ...r.tedditNormalCustomRedirects,
- ...r.tedditTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- let instancesList;
- if (r.redditFrontend == 'libreddit') {
- if (r.redditProtocol == 'normal') instancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
- else if (r.redditProtocol == 'tor') instancesList = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
- if ([
- ...r.redditRedirects.teddit.normal,
- ...r.redditRedirects.teddit.tor
- ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
- }
- else if (r.redditFrontend == 'teddit') {
- if (r.redditProtocol == 'normal') instancesList = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects];
- else if (r.redditProtocol == 'tor') instancesList = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects];
- if ([
- ...r.redditRedirects.libreddit.normal,
- ...r.redditRedirects.libreddit.tor
- ].includes(protocolHost)
- ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
- }
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
+ let instancesList;
+ if (redditFrontend == 'libreddit') {
+ if (redditProtocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
+ else if (redditProtocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
+ if ([
+ ...redditRedirects.teddit.normal,
+ ...redditRedirects.teddit.tor
+ ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
+ }
+ else if (redditFrontend == 'teddit') {
+ if (redditProtocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
+ else if (redditProtocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
+ if ([
+ ...redditRedirects.libreddit.normal,
+ ...redditRedirects.libreddit.tor
+ ].includes(protocolHost)
+ ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.reddit}`)
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.reddit}`);
})
}
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 9bd9c132..b32a8141 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -5,11 +5,10 @@ import utils from './utils.js'
const targets = [
/^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/,
/^https?:\/{2}(www\.|www2\.|)bing\.com/,
-
/^https?:\/{2}yandex(\.[a-z]{2,3}){1,2}/,
-
/^https?:\/{2}search\.libredirect\.invalid/,
];
+
let redirects = {
"searx": {
"normal": [],
@@ -54,388 +53,344 @@ function setRedirects(val) {
}
let
+ disableSearch,
+ searchFrontend,
+ searchRedirects,
+ searchProtocol,
+ whoogleNormalRedirectsChecks,
+ whoogleNormalCustomRedirects,
+ whoogleTorRedirectsChecks,
+ whoogleTorCustomRedirects,
+ whoogleI2pRedirectsChecks,
+ whoogleI2pCustomRedirects,
searxNormalRedirectsChecks,
+ searxNormalCustomRedirects,
+ searxTorRedirectsChecks,
+ searxTorCustomRedirects,
+ searxI2pRedirectsChecks,
+ searxI2pCustomRedirects,
searxngNormalRedirectsChecks,
- whoogleNormalRedirectsChecks;
-
-function initSearxCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "searchProtocol",
- "searxNormalRedirectsChecks",
- "searxNormalCustomRedirects",
- "searxTorRedirectsChecks",
- "searxTorCustomRedirects",
- "searxI2pRedirectsChecks",
- "searxI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.searxNormalRedirectsChecks,
- ...r.searxNormalCustomRedirects,
- ...r.searxTorRedirectsChecks,
- ...r.searxTorCustomRedirects,
- ...r.searxI2pRedirectsChecks,
- ...r.searxI2pCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects];
- else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects];
- else if (r.searchProtocol == 'i2p') checkedInstances = [...r.searxI2pRedirectsChecks, ...r.searxI2pCustomRedirects];
- for (const to of checkedInstances) {
- utils.copyCookie('searx', from, to, 'advanced_search');
- utils.copyCookie('searx', from, to, 'autocomplete');
- utils.copyCookie('searx', from, to, 'categories');
- utils.copyCookie('searx', from, to, 'disabled_engines');
- utils.copyCookie('searx', from, to, 'disabled_plugins');
- utils.copyCookie('searx', from, to, 'doi_resolver');
- utils.copyCookie('searx', from, to, 'enabled_engines');
- utils.copyCookie('searx', from, to, 'enabled_plugins');
- utils.copyCookie('searx', from, to, 'image_proxy');
- utils.copyCookie('searx', from, to, 'language');
- utils.copyCookie('searx', from, to, 'locale');
- utils.copyCookie('searx', from, to, 'method');
- utils.copyCookie('searx', from, to, 'oscar-style');
- utils.copyCookie('searx', from, to, 'results_on_new_tab');
- utils.copyCookie('searx', from, to, 'safesearch');
- utils.copyCookie('searx', from, to, 'theme');
- utils.copyCookie('searx', from, to, 'tokens');
- }
- }
- resolve(true);
- }
- )
- })
-}
-
-function setSearxCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableSearch",
- "searchProtocol",
- "searchFrontend",
- "searxNormalRedirectsChecks",
- "searxNormalCustomRedirects",
- "searxTorRedirectsChecks",
- "searxTorCustomRedirects",
- ],
- r => {
- if (r.disableSearch || r.searchFrontend != 'searx') { resolve(); return; }
- let checkedInstances;
- if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects]
- else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('searx', to, 'advanced_search');
- utils.getCookiesFromStorage('searx', to, 'autocomplete');
- utils.getCookiesFromStorage('searx', to, 'categories');
- utils.getCookiesFromStorage('searx', to, 'disabled_engines');
- utils.getCookiesFromStorage('searx', to, 'disabled_plugins');
- utils.getCookiesFromStorage('searx', to, 'doi_resolver');
- utils.getCookiesFromStorage('searx', to, 'enabled_engines');
- utils.getCookiesFromStorage('searx', to, 'enabled_plugins');
- utils.getCookiesFromStorage('searx', to, 'image_proxy');
- utils.getCookiesFromStorage('searx', to, 'language');
- utils.getCookiesFromStorage('searx', to, 'locale');
- utils.getCookiesFromStorage('searx', to, 'method');
- utils.getCookiesFromStorage('searx', to, 'oscar-style');
- utils.getCookiesFromStorage('searx', to, 'results_on_new_tab');
- utils.getCookiesFromStorage('searx', to, 'safesearch');
- utils.getCookiesFromStorage('searx', to, 'theme');
- utils.getCookiesFromStorage('searx', to, 'tokens');
- }
- resolve();
- }
- )
- })
-}
+ searxngNormalCustomRedirects,
+ searxngTorRedirectsChecks,
+ searxngTorCustomRedirects,
+ searxngI2pRedirectsChecks,
+ searxngI2pCustomRedirects;
-function initSearxngCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "searchProtocol",
- "searxngNormalRedirectsChecks",
- "searxngNormalCustomRedirects",
- "searxngTorRedirectsChecks",
- "searxngTorCustomRedirects",
- "searxngI2pRedirectsChecks",
- "searxngI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.searxngNormalRedirectsChecks,
- ...r.searxngNormalCustomRedirects,
- ...r.searxngTorRedirectsChecks,
- ...r.searxngTorCustomRedirects,
- ...r.searxngI2pRedirectsChecks,
- ...r.searxngI2pCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
-
- if (!test) {
- let checkedInstances;
- if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects];
- else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects];
- else if (r.searchProtocol == 'i2p') checkedInstances = [...r.searxngI2pRedirectsChecks, ...r.searxngI2pCustomRedirects];
- for (const to of checkedInstances) {
- utils.copyCookie('searxng', from, to, 'autocomplete');
- utils.copyCookie('searxng', from, to, 'categories');
- utils.copyCookie('searxng', from, to, 'disabled_engines');
- utils.copyCookie('searxng', from, to, 'disabled_plugins');
- utils.copyCookie('searxng', from, to, 'doi_resolver');
- utils.copyCookie('searxng', from, to, 'enabled_plugins');
- utils.copyCookie('searxng', from, to, 'enabled_engines');
- utils.copyCookie('searxng', from, to, 'image_proxy');
- utils.copyCookie('searxng', from, to, 'infinite_scroll');
- utils.copyCookie('searxng', from, to, 'language');
- utils.copyCookie('searxng', from, to, 'locale');
- utils.copyCookie('searxng', from, to, 'maintab');
- utils.copyCookie('searxng', from, to, 'method');
- utils.copyCookie('searxng', from, to, 'query_in_title');
- utils.copyCookie('searxng', from, to, 'results_on_new_tab');
- utils.copyCookie('searxng', from, to, 'safesearch');
- utils.copyCookie('searxng', from, to, 'simple_style');
- utils.copyCookie('searxng', from, to, 'theme');
- utils.copyCookie('searxng', from, to, 'tokens');
- }
- }
- resolve(true);
- }
- )
- })
-}
-
-function setSearxngCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "searchProtocol",
- "disableSearch",
- "searchFrontend",
- "searxngNormalRedirectsChecks",
- "searxngNormalCustomRedirects",
- "searxngTorRedirectsChecks",
- "searxngTorCustomRedirects",
- ],
- r => {
- if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects]
- else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('searxng', to, 'autocomplete');
- utils.getCookiesFromStorage('searxng', to, 'categories');
- utils.getCookiesFromStorage('searxng', to, 'disabled_engines');
- utils.getCookiesFromStorage('searxng', to, 'disabled_plugins');
- utils.getCookiesFromStorage('searxng', to, 'doi_resolver');
- utils.getCookiesFromStorage('searxng', to, 'enabled_plugins');
- utils.getCookiesFromStorage('searxng', to, 'enabled_engines');
- utils.getCookiesFromStorage('searxng', to, 'image_proxy');
- utils.getCookiesFromStorage('searxng', to, 'infinite_scroll');
- utils.getCookiesFromStorage('searxng', to, 'language');
- utils.getCookiesFromStorage('searxng', to, 'locale');
- utils.getCookiesFromStorage('searxng', to, 'maintab');
- utils.getCookiesFromStorage('searxng', to, 'method');
- utils.getCookiesFromStorage('searxng', to, 'query_in_title');
- utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
- utils.getCookiesFromStorage('searxng', to, 'safesearch');
- utils.getCookiesFromStorage('searxng', to, 'simple_style');
- utils.getCookiesFromStorage('searxng', to, 'theme');
- utils.getCookiesFromStorage('searxng', to, 'tokens');
- }
- resolve();
- }
- )
- })
-}
-
-function redirect(url) {
- return new Promise(resolve => {
+function init() {
+ return new Promise(async resolve => {
browser.storage.local.get(
[
"disableSearch",
"searchFrontend",
"searchRedirects",
"searchProtocol",
-
"whoogleNormalRedirectsChecks",
"whoogleNormalCustomRedirects",
-
"whoogleTorRedirectsChecks",
"whoogleTorCustomRedirects",
-
"whoogleI2pRedirectsChecks",
"whoogleI2pCustomRedirects",
-
"searxNormalRedirectsChecks",
"searxNormalCustomRedirects",
-
"searxTorRedirectsChecks",
"searxTorCustomRedirects",
-
"searxI2pRedirectsChecks",
"searxI2pCustomRedirects",
-
"searxngNormalRedirectsChecks",
"searxngNormalCustomRedirects",
-
"searxngTorRedirectsChecks",
"searxngTorCustomRedirects",
-
"searxngI2pRedirectsChecks",
"searxngI2pCustomRedirects",
],
r => {
- if (r.disableSearch) { resolve(); return; }
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
- if (url.searchParams.has('tbm')) { resolve(); return; }
- if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') { resolve(); return; }
- let randomInstance;
- let path;
- if (r.searchFrontend == 'searx') {
- let instancesList;
- if (r.searchProtocol == 'normal') instancesList = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects];
- else if (r.searchProtocol == 'tor') instancesList = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects];
- else if (r.searchProtocol == 'i2p') instancesList = [...r.searxI2pRedirectsChecks, ...r.searxI2pCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (r.searchFrontend == 'searxng') {
- let instancesList;
- if (r.searchProtocol == 'normal') instancesList = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects];
- else if (r.searchProtocol == 'tor') instancesList = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects];
- else if (r.searchProtocol == 'i2p') instancesList = [...r.searxngI2pRedirectsChecks, ...r.searxngI2pCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (r.searchFrontend == 'whoogle') {
- let instancesList;
- if (r.searchProtocol == 'normal') instancesList = [...r.whoogleNormalRedirectsChecks, ...r.whoogleNormalCustomRedirects];
- if (r.searchProtocol == 'tor') instancesList = [...r.whoogleTorRedirectsChecks, ...r.whoogleTorCustomRedirects];
- if (r.searchProtocol == 'i2p') instancesList = [...r.whoogleI2pRedirectsChecks, ...r.whoogleI2pCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/search";
- }
+ disableSearch = r.disableSearch;
+ searchFrontend = r.searchFrontend;
+ searchRedirects = r.searchRedirects;
+ searchProtocol = r.searchProtocol;
+ whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks;
+ whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects;
+ whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks;
+ whoogleTorCustomRedirects = r.whoogleTorCustomRedirects;
+ whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks;
+ whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects;
+ searxNormalRedirectsChecks = r.searxNormalRedirectsChecks;
+ searxNormalCustomRedirects = r.searxNormalCustomRedirects;
+ searxTorRedirectsChecks = r.searxTorRedirectsChecks;
+ searxTorCustomRedirects = r.searxTorCustomRedirects;
+ searxI2pRedirectsChecks = r.searxI2pRedirectsChecks;
+ searxI2pCustomRedirects = r.searxI2pCustomRedirects;
+ searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks;
+ searxngNormalCustomRedirects = r.searxngNormalCustomRedirects;
+ searxngTorRedirectsChecks = r.searxngTorRedirectsChecks;
+ searxngTorCustomRedirects = r.searxngTorCustomRedirects;
+ searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks;
+ searxngI2pCustomRedirects = r.searxngI2pCustomRedirects;
+ resolve();
+ }
+ )
+ })
+}
- if (
- ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
- (url.hostname.includes('yandex') && !url.searchParams.has('text'))
- ) path = '/';
+init();
+browser.storage.onChanged.addListener(init)
- let searchQuery = "";
- if (
- (
- url.hostname.includes('google') ||
- url.hostname.includes('bing') ||
- url.hostname.includes('search.libredirect.invalid')
- ) &&
- url.searchParams.has('q')
- ) searchQuery = `?q=${url.searchParams.get('q')}`;
- if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`;
+function initSearxCookies(test, from) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(from);
+ if (![
+ ...searxNormalRedirectsChecks,
+ ...searxNormalCustomRedirects,
+ ...searxTorRedirectsChecks,
+ ...searxTorCustomRedirects,
+ ...searxI2pRedirectsChecks,
+ ...searxI2pCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- resolve(`${randomInstance}${path}${searchQuery}`);
- })
+ if (!test) {
+ let checkedInstances;
+ if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
+ else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
+ else if (searchProtocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
+ for (const to of checkedInstances) {
+ utils.copyCookie('searx', from, to, 'advanced_search');
+ utils.copyCookie('searx', from, to, 'autocomplete');
+ utils.copyCookie('searx', from, to, 'categories');
+ utils.copyCookie('searx', from, to, 'disabled_engines');
+ utils.copyCookie('searx', from, to, 'disabled_plugins');
+ utils.copyCookie('searx', from, to, 'doi_resolver');
+ utils.copyCookie('searx', from, to, 'enabled_engines');
+ utils.copyCookie('searx', from, to, 'enabled_plugins');
+ utils.copyCookie('searx', from, to, 'image_proxy');
+ utils.copyCookie('searx', from, to, 'language');
+ utils.copyCookie('searx', from, to, 'locale');
+ utils.copyCookie('searx', from, to, 'method');
+ utils.copyCookie('searx', from, to, 'oscar-style');
+ utils.copyCookie('searx', from, to, 'results_on_new_tab');
+ utils.copyCookie('searx', from, to, 'safesearch');
+ utils.copyCookie('searx', from, to, 'theme');
+ utils.copyCookie('searx', from, to, 'tokens');
+ }
+ }
+ resolve(true);
})
}
-async function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "searchFrontend",
- "searchRedirects",
- "searchProtocol",
-
- "whoogleNormalRedirectsChecks",
- "whoogleNormalCustomRedirects",
+function setSearxCookies() {
+ return new Promise(async resolve => {
+ await init();
+ if (disableSearch || searchFrontend != 'searx') { resolve(); return; }
+ let checkedInstances;
+ if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('searx', to, 'advanced_search');
+ utils.getCookiesFromStorage('searx', to, 'autocomplete');
+ utils.getCookiesFromStorage('searx', to, 'categories');
+ utils.getCookiesFromStorage('searx', to, 'disabled_engines');
+ utils.getCookiesFromStorage('searx', to, 'disabled_plugins');
+ utils.getCookiesFromStorage('searx', to, 'doi_resolver');
+ utils.getCookiesFromStorage('searx', to, 'enabled_engines');
+ utils.getCookiesFromStorage('searx', to, 'enabled_plugins');
+ utils.getCookiesFromStorage('searx', to, 'image_proxy');
+ utils.getCookiesFromStorage('searx', to, 'language');
+ utils.getCookiesFromStorage('searx', to, 'locale');
+ utils.getCookiesFromStorage('searx', to, 'method');
+ utils.getCookiesFromStorage('searx', to, 'oscar-style');
+ utils.getCookiesFromStorage('searx', to, 'results_on_new_tab');
+ utils.getCookiesFromStorage('searx', to, 'safesearch');
+ utils.getCookiesFromStorage('searx', to, 'theme');
+ utils.getCookiesFromStorage('searx', to, 'tokens');
+ }
+ resolve();
+ })
+}
- "whoogleTorRedirectsChecks",
- "whoogleTorCustomRedirects",
+function initSearxngCookies(test, from) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(from);
+ if (![
+ ...searxngNormalRedirectsChecks,
+ ...searxngNormalCustomRedirects,
+ ...searxngTorRedirectsChecks,
+ ...searxngTorCustomRedirects,
+ ...searxngI2pRedirectsChecks,
+ ...searxngI2pCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- "whoogleI2pRedirectsChecks",
- "whoogleI2pCustomRedirects",
+ if (!test) {
+ let checkedInstances;
+ if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
+ else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
+ else if (searchProtocol == 'i2p') checkedInstances = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
+ for (const to of checkedInstances) {
+ utils.copyCookie('searxng', from, to, 'autocomplete');
+ utils.copyCookie('searxng', from, to, 'categories');
+ utils.copyCookie('searxng', from, to, 'disabled_engines');
+ utils.copyCookie('searxng', from, to, 'disabled_plugins');
+ utils.copyCookie('searxng', from, to, 'doi_resolver');
+ utils.copyCookie('searxng', from, to, 'enabled_plugins');
+ utils.copyCookie('searxng', from, to, 'enabled_engines');
+ utils.copyCookie('searxng', from, to, 'image_proxy');
+ utils.copyCookie('searxng', from, to, 'infinite_scroll');
+ utils.copyCookie('searxng', from, to, 'language');
+ utils.copyCookie('searxng', from, to, 'locale');
+ utils.copyCookie('searxng', from, to, 'maintab');
+ utils.copyCookie('searxng', from, to, 'method');
+ utils.copyCookie('searxng', from, to, 'query_in_title');
+ utils.copyCookie('searxng', from, to, 'results_on_new_tab');
+ utils.copyCookie('searxng', from, to, 'safesearch');
+ utils.copyCookie('searxng', from, to, 'simple_style');
+ utils.copyCookie('searxng', from, to, 'theme');
+ utils.copyCookie('searxng', from, to, 'tokens');
+ }
+ }
+ resolve(true);
+ })
+}
- "searxNormalRedirectsChecks",
- "searxNormalCustomRedirects",
+function setSearxngCookies() {
+ return new Promise(async resolve => {
+ await init();
+ if (disableSearch || searchFrontend != 'searxng', searchProtocol === undefined) { resolve(); return; }
+ let checkedInstances;
+ if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('searxng', to, 'autocomplete');
+ utils.getCookiesFromStorage('searxng', to, 'categories');
+ utils.getCookiesFromStorage('searxng', to, 'disabled_engines');
+ utils.getCookiesFromStorage('searxng', to, 'disabled_plugins');
+ utils.getCookiesFromStorage('searxng', to, 'doi_resolver');
+ utils.getCookiesFromStorage('searxng', to, 'enabled_plugins');
+ utils.getCookiesFromStorage('searxng', to, 'enabled_engines');
+ utils.getCookiesFromStorage('searxng', to, 'image_proxy');
+ utils.getCookiesFromStorage('searxng', to, 'infinite_scroll');
+ utils.getCookiesFromStorage('searxng', to, 'language');
+ utils.getCookiesFromStorage('searxng', to, 'locale');
+ utils.getCookiesFromStorage('searxng', to, 'maintab');
+ utils.getCookiesFromStorage('searxng', to, 'method');
+ utils.getCookiesFromStorage('searxng', to, 'query_in_title');
+ utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
+ utils.getCookiesFromStorage('searxng', to, 'safesearch');
+ utils.getCookiesFromStorage('searxng', to, 'simple_style');
+ utils.getCookiesFromStorage('searxng', to, 'theme');
+ utils.getCookiesFromStorage('searxng', to, 'tokens');
+ }
+ resolve();
+ })
+}
- "searxTorRedirectsChecks",
- "searxTorCustomRedirects",
- "searxI2pRedirectsChecks",
- "searxI2pCustomRedirects",
+function redirect(url) {
+ if (disableSearch) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
+ if (url.searchParams.has('tbm')) return;
+ if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return;
+ let randomInstance;
+ let path;
+ if (searchFrontend == 'searx') {
+ let instancesList;
+ if (searchProtocol == 'normal') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
+ else if (searchProtocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
+ else if (searchProtocol == 'i2p') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
+ if (instancesList.length === 0) return;
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/";
+ }
+ else if (searchFrontend == 'searxng') {
+ let instancesList;
+ if (searchProtocol == 'normal') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
+ else if (searchProtocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
+ else if (searchProtocol == 'i2p') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
+ if (instancesList.length === 0) return;
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/";
+ }
+ else if (searchFrontend == 'whoogle') {
+ let instancesList;
+ if (searchProtocol == 'normal') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
+ if (searchProtocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
+ if (searchProtocol == 'i2p') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
+ if (instancesList.length === 0) return;
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/search";
+ }
- "searxngNormalRedirectsChecks",
- "searxngNormalCustomRedirects",
+ if (
+ ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
+ (url.hostname.includes('yandex') && !url.searchParams.has('text'))
+ ) path = '/';
- "searxngTorRedirectsChecks",
- "searxngTorCustomRedirects",
+ let searchQuery = "";
+ if (
+ (
+ url.hostname.includes('google') ||
+ url.hostname.includes('bing') ||
+ url.hostname.includes('search.libredirect.invalid')
+ ) &&
+ url.searchParams.has('q')
+ ) searchQuery = `?q=${url.searchParams.get('q')}`;
+ if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`;
- "searxngI2pRedirectsChecks",
- "searxngI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.searchRedirects.searx.normal,
- ...r.searchRedirects.searx.tor,
- ...r.searchRedirects.searx.i2p,
+ return `${randomInstance}${path}${searchQuery}`;
+}
- ...r.searchRedirects.searxng.normal,
- ...r.searchRedirects.searxng.tor,
- ...r.searchRedirects.searxng.i2p,
+function switchInstance(url) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(url);
+ if (![
+ ...searchRedirects.searx.normal,
+ ...searchRedirects.searx.tor,
+ ...searchRedirects.searx.i2p,
- ...r.searchRedirects.whoogle.normal,
- ...r.searchRedirects.whoogle.tor,
- ...r.searchRedirects.whoogle.i2p,
+ ...searchRedirects.searxng.normal,
+ ...searchRedirects.searxng.tor,
+ ...searchRedirects.searxng.i2p,
- ...r.searxNormalCustomRedirects,
- ...r.searxTorCustomRedirects,
- ...r.searxI2pCustomRedirects,
+ ...searchRedirects.whoogle.normal,
+ ...searchRedirects.whoogle.tor,
+ ...searchRedirects.whoogle.i2p,
- ...r.searxngNormalCustomRedirects,
- ...r.searxngTorCustomRedirects,
- ...r.searxngI2pCustomRedirects,
+ ...searxNormalCustomRedirects,
+ ...searxTorCustomRedirects,
+ ...searxI2pCustomRedirects,
- ...r.whoogleNormalCustomRedirects,
- ...r.whoogleTorCustomRedirects,
- ...r.whoogleI2pCustomRedirects,
- ].includes(protocolHost)) {
+ ...searxngNormalCustomRedirects,
+ ...searxngTorCustomRedirects,
+ ...searxngI2pCustomRedirects,
- resolve();
- }
+ ...whoogleNormalCustomRedirects,
+ ...whoogleTorCustomRedirects,
+ ...whoogleI2pCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (r.searchProtocol == 'normal') {
- if (r.searchFrontend == 'searx') instancesList = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects];
- else if (r.searchFrontend == 'searxng') instancesList = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects];
- else if (r.searchFrontend == 'whoogle') instancesList = [...r.whoogleNormalRedirectsChecks, ...r.whoogleNormalCustomRedirects];
- }
- else if (r.searchProtocol == 'tor') {
- if (r.searchFrontend == 'searx') instancesList = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects];
- else if (r.searchFrontend == 'searxng') instancesList = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects];
- else if (r.searchFrontend == 'whoogle') instancesList = [...r.whoogleTorRedirectsChecks, ...r.whoogleTorCustomRedirects];
- }
- else if (r.searchProtocol == 'i2p') {
- if (r.searchFrontend == 'searx') instancesList = [...r.searxI2pRedirectsChecks, ...r.searxI2pCustomRedirects];
- else if (r.searchFrontend == 'searxng') instancesList = [...r.searxngI2pRedirectsChecks, ...r.searxngI2pCustomRedirects];
- else if (r.searchFrontend == 'whoogle') instancesList = [...r.whoogleI2pRedirectsChecks, ...r.whoogleI2pCustomRedirects];
- }
+ let instancesList;
+ if (searchProtocol == 'normal') {
+ if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
+ else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
+ else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
+ }
+ else if (searchProtocol == 'tor') {
+ if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
+ else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
+ else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
+ }
+ else if (searchProtocol == 'i2p') {
+ if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
+ else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
+ else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) resolve();
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
@@ -505,13 +460,10 @@ function initDefaults() {
export default {
setRedirects,
-
initSearxCookies,
setSearxCookies,
-
initSearxngCookies,
setSearxngCookies,
-
redirect,
initDefaults,
switchInstance,
diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js
index be99e0d9..c4caefb3 100644
--- a/src/assets/javascripts/helpers/sendTargets.js
+++ b/src/assets/javascripts/helpers/sendTargets.js
@@ -29,91 +29,88 @@ function setRedirects(val) {
})
}
-let sendNormalRedirectsChecks;
+let
+ disableSendTarget,
+ sendTargetsRedirects,
+ sendNormalRedirectsChecks,
+ sendNormalCustomRedirects,
+ sendTorRedirectsChecks,
+ sendTorCustomRedirects,
+ sendTargetsProtocol;
-function switchInstance(url) {
+function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
"disableSendTarget",
"sendTargetsRedirects",
"sendTargetsProtocol",
-
"sendNormalRedirectsChecks",
"sendNormalCustomRedirects",
-
"sendTorRedirectsChecks",
"sendTorCustomRedirects",
],
r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.sendTargetsRedirects.send.normal,
- ...r.sendTargetsRedirects.send.tor,
- ...r.sendNormalCustomRedirects,
- ...r.sendTorCustomRedirects,
- ].includes(protocolHost)) resolve();
-
- if (url.pathname != '/') resolve();
-
- let instancesList;
- if (r.sendTargetsProtocol == 'normal') instancesList = [...r.sendNormalRedirectsChecks, ...r.sendNormalCustomRedirects];
- else if (r.sendTargetsProtocol == 'tor') instancesList = [...r.sendTorRedirectsChecks, ...r.sendTorCustomRedirects];
-
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) resolve();
-
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
+ disableSendTarget = r.disableSendTarget;
+ sendTargetsRedirects = r.sendTargetsRedirects;
+ sendNormalRedirectsChecks = r.sendNormalRedirectsChecks;
+ sendNormalCustomRedirects = r.sendNormalCustomRedirects;
+ sendTorRedirectsChecks = r.sendTorRedirectsChecks;
+ sendTorCustomRedirects = r.sendTorCustomRedirects;
+ sendTargetsProtocol = r.sendTargetsProtocol;
+ resolve();
}
)
})
}
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableSendTarget",
- "sendTargetsRedirects",
+init();
+browser.storage.onChanged.addListener(init)
- "sendNormalRedirectsChecks",
- "sendNormalCustomRedirects",
+function all() {
+ return [
+ ...sendTargetsRedirects.send.normal,
+ ...sendTargetsRedirects.send.tor,
+ ...sendNormalCustomRedirects,
+ ...sendTorRedirectsChecks,
+ ...sendTorCustomRedirects,
+ ];
+}
- "sendTorRedirectsChecks",
- "sendTorCustomRedirects",
+function switchInstance(url) {
+ return new Promise(resolve => {
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve(); return; }
+ if (url.pathname != '/') { resolve(); return; }
- "sendTargetsProtocol"
- ],
- r => {
- if (r.disableSendTarget) { resolve(); return; }
- if (type != "main_frame") { resolve(); return; }
- if (
- initiator && (
- [
- ...r.sendTargetsRedirects.send.normal,
- ...r.sendTargetsRedirects.send.tor,
- ...r.sendNormalCustomRedirects,
- ...r.sendTorRedirectsChecks
- ].includes(initiator.origin) ||
- targets.includes(initiator.host)
- )
- ) { resolve(); return; }
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
+ let instancesList;
+ if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
+ else if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
- let instancesList;
- if (r.sendTargetsProtocol == 'normal') instancesList = [...r.sendNormalRedirectsChecks, ...r.sendNormalCustomRedirects];
- if (r.sendTargetsProtocol == 'tor') instancesList = [...r.sendTorRedirectsChecks, ...r.sendTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(randomInstance);
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
+function redirect(url, type, initiator) {
+ if (disableSendTarget) return;
+ if (type != "main_frame") return;
+ if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
+
+ let instancesList;
+ if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
+ if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
+ if (instancesList.length === 0) return;
+
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return randomInstance;
+}
+
function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
index 897baf0a..750744e6 100644
--- a/src/assets/javascripts/helpers/tiktok.js
+++ b/src/assets/javascripts/helpers/tiktok.js
@@ -27,138 +27,116 @@ function setRedirects(val) {
})
}
-let proxiTokNormalRedirectsChecks;
-let proxiTokTorRedirectsChecks;
-let proxiTokNormalCustomRedirects = [];
-let proxiTokTorCustomRedirects = [];
-
-let disable; // disableTiktok
-let protocol;
-
function initProxiTokCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "tiktokProtocol",
- "proxiTokNormalRedirectsChecks",
- "proxiTokNormalCustomRedirects",
- "proxiTokTorRedirectsChecks",
- "proxiTokTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.proxiTokNormalRedirectsChecks,
- ...r.proxiTokNormalCustomRedirects,
- ...r.proxiTokTorRedirectsChecks,
- ...r.proxiTokTorCustomRedirects,
- ].includes(protocolHost)) resolve();
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(from);
+ if (![
+ ...proxiTokNormalRedirectsChecks,
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorRedirectsChecks,
+ ...proxiTokTorCustomRedirects,
+ ].includes(protocolHost)) resolve();
- if (!test) {
- let checkedInstances;
- if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
- else if (r.tiktokProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('proxitok', from, to, 'theme');
- utils.copyCookie('proxitok', from, to, 'api-legacy');
- }
- }
- resolve(true);
+ if (!test) {
+ let checkedInstances;
+ if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.copyCookie('proxitok', from, to, 'theme');
+ utils.copyCookie('proxitok', from, to, 'api-legacy');
}
- )
+ }
+ resolve(true);
})
}
function setProxiTokCookies() {
return new Promise(resolve => {
+ if (disableTiktok || tiktokProtocol === undefined) { resolve(); return; }
+ let checkedInstances;
+ if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('proxitok', to, 'theme');
+ utils.getCookiesFromStorage('proxitok', to, 'api-legacy');
+ }
+ resolve();
+ })
+}
+
+let
+ disableTiktok,
+ tiktokProtocol,
+ tiktokRedirects,
+ proxiTokNormalRedirectsChecks,
+ proxiTokNormalCustomRedirects,
+ proxiTokTorRedirectsChecks,
+ proxiTokTorCustomRedirects;
+
+function init() {
+ return new Promise(async resolve => {
browser.storage.local.get(
[
- "tiktokProtocol",
"disableTiktok",
+ "tiktokProtocol",
+ "tiktokRedirects",
"proxiTokNormalRedirectsChecks",
"proxiTokNormalCustomRedirects",
"proxiTokTorRedirectsChecks",
"proxiTokTorCustomRedirects",
],
r => {
- if (r.disableTiktok || r.tiktokProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
- else if (r.tiktokProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('proxitok', to, 'theme');
- utils.getCookiesFromStorage('proxitok', to, 'api-legacy');
- }
+ disableTiktok = r.disableTiktok;
+ tiktokProtocol = r.tiktokProtocol;
+ tiktokRedirects = r.tiktokRedirects;
+ proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks;
+ proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects;
+ proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks;
+ proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects;
resolve();
}
)
})
}
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableTiktok",
- "tiktokProtocol",
-
- "tiktokRedirects",
-
- "proxiTokNormalRedirectsChecks",
- "proxiTokNormalCustomRedirects",
+init();
+browser.storage.onChanged.addListener(init)
- "proxiTokTorRedirectsChecks",
- "proxiTokTorCustomRedirects",
- ],
- r => {
- if (r.disableTiktok) { resolve(); return; };
- if (type != "main_frame") { resolve(); return; };
- if (initiator && (
- [
- ...r.tiktokRedirects.proxiTok.normal,
- ...r.proxiTokNormalCustomRedirects
- ].includes(initiator.origin) ||
- targets.includes(initiator.host)
- )
- ) { resolve(); return; };
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; };
- // https://www.tiktok.com/@keysikaspol/video/7061265241887345946
- // https://www.tiktok.com/@keysikaspol
+// https://www.tiktok.com/@keysikaspol/video/7061265241887345946
+// https://www.tiktok.com/@keysikaspol
+function redirect(url, type, initiator) {
+ if (disableTiktok) return;
+ if (type != "main_frame") return;
+ const all = [
+ ...tiktokRedirects.proxiTok.normal,
+ ...proxiTokNormalCustomRedirects
+ ];
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList;
- if (r.tiktokProtocol == 'normal') instancesList = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects];
- if (r.tiktokProtocol == 'tor') instancesList = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; };
+ let instancesList;
+ if (tiktokProtocol == 'normal') instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
+ if (tiktokProtocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
+ if (instancesList.length === 0) return;
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}`);
- }
- )
- })
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return `${randomInstance}${url.pathname}`;
}
-async function reverse(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "tiktokRedirects",
- "proxiTokNormalCustomRedirects",
- "proxiTokTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (
- ![
- ...r.tiktokRedirects.proxiTok.normal,
- ...r.tiktokRedirects.proxiTok.tor,
- ...r.proxiTokNormalCustomRedirects,
- ...r.proxiTokTorCustomRedirects
- ].includes(protocolHost)
- ) { resolve(); return; }
+function reverse(url) {
+ return new Promise(async resolve => {
+ await init();
+ let protocolHost = utils.protocolHost(url);
+ const all = [
+ ...tiktokRedirects.proxiTok.normal,
+ ...tiktokRedirects.proxiTok.tor,
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorCustomRedirects
+ ];
+ if (!all.includes(protocolHost)) { resolve(); return; }
- resolve(`https://tiktok.com${url.pathname}${url.search}`);
- }
- )
+ resolve(`https://tiktok.com${url.pathname}${url.search}`);
})
}
diff --git a/src/assets/javascripts/helpers/translate/set_lingva_preferences.js b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
index d40f28e4..01a3b85e 100644
--- a/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
+++ b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
@@ -10,6 +10,7 @@ browser.storage.local.get(
r => {
if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']);
if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto);
+ console.log('r.lingva_isauto', r.lingva_isauto, localStorage.getItem('isauto'))
if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source);
if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target);
diff --git a/src/assets/javascripts/helpers/translate/translate.js b/src/assets/javascripts/helpers/translate/translate.js
index 3e853160..74400040 100644
--- a/src/assets/javascripts/helpers/translate/translate.js
+++ b/src/assets/javascripts/helpers/translate/translate.js
@@ -18,8 +18,59 @@ let redirects = {
};
let
+ translateDisable,
+ translateFrontend,
+ translateProtocol,
+ translateRedirects,
simplyTranslateNormalRedirectsChecks,
- lingvaNormalRedirectsChecks;
+ simplyTranslateNormalCustomRedirects,
+ simplyTranslateTorRedirectsChecks,
+ simplyTranslateTorCustomRedirects,
+ lingvaNormalRedirectsChecks,
+ lingvaNormalCustomRedirects,
+ lingvaTorRedirectsChecks,
+ lingvaTorCustomRedirects;
+
+function init() {
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "translateDisable",
+ "translateFrontend",
+ "translateProtocol",
+ "translateRedirects",
+
+ "simplyTranslateNormalRedirectsChecks",
+ "simplyTranslateNormalCustomRedirects",
+ "simplyTranslateTorRedirectsChecks",
+ "simplyTranslateTorCustomRedirects",
+
+ "lingvaNormalRedirectsChecks",
+ "lingvaNormalCustomRedirects",
+ "lingvaTorRedirectsChecks",
+ "lingvaTorCustomRedirects",
+ ],
+ r => {
+ translateDisable = r.translateDisable;
+ translateFrontend = r.translateFrontend;
+ translateProtocol = r.translateProtocol;
+ translateRedirects = r.translateRedirects;
+ simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks;
+ simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects;
+ simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks;
+ simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects;
+ lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks;
+ lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects;
+ lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks;
+ lingvaTorCustomRedirects = r.lingvaTorCustomRedirects;
+ resolve();
+ }
+ )
+ })
+}
+
+init();
+browser.storage.onChanged.addListener(init)
function setRedirects(val) {
browser.storage.local.get('cloudflareList', r => {
@@ -44,226 +95,153 @@ function setRedirects(val) {
}
function initLingvaLocalStorage(test, url, tabId) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateDisable",
- "translateProtocol",
- "translateFrontend",
- "lingvaNormalRedirectsChecks",
- "lingvaNormalCustomRedirects",
- "lingvaTorRedirectsChecks",
- "lingvaTorCustomRedirects",
- ],
- r => {
- if (r.translateDisable || r.translateFrontend != 'lingva') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...r.lingvaNormalRedirectsChecks,
- ...r.lingvaNormalCustomRedirects,
- ...r.lingvaTorRedirectsChecks,
- ...r.lingvaTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init();
+ if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
+ const protocolHost = utils.protocolHost(url);
+ if (![
+ ...lingvaNormalRedirectsChecks,
+ ...lingvaNormalCustomRedirects,
+ ...lingvaTorRedirectsChecks,
+ ...lingvaTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- browser.tabs.executeScript(
- tabId,
- { file: "/assets/javascripts/helpers/translate/get_lingva_preferences.js", runAt: "document_start" }
- );
+ if (!test) {
+ browser.tabs.executeScript(
+ tabId,
+ { file: "/assets/javascripts/helpers/translate/get_lingva_preferences.js", runAt: "document_start" }
+ );
- let checkedInstances;
- if (r.translateProtocol == 'normal') checkedInstances = [...r.lingvaNormalRedirectsChecks, ...r.lingvaNormalCustomRedirects];
- if (r.translateProtocol == 'tor') checkedInstances = [...r.lingvaTorRedirectsChecks, ...r.lingvaTorCustomRedirects];
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- if (checkedInstances.length === 0) { resolve(); return; }
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/translate/set_lingva_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- }
- )
- })
+ let checkedInstances;
+ if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
+ if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
+ const i = checkedInstances.indexOf(protocolHost);
+ if (i !== -1) checkedInstances.splice(i, 1);
+ if (checkedInstances.length === 0) { resolve(); return; }
+ for (const to of checkedInstances)
+ browser.tabs.create(
+ { url: to },
+ tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/translate/set_lingva_preferences.js", runAt: "document_start" })
+ );
+ }
+ resolve(true);
+ }
+ )
}
function initSimplyTranslateCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateProtocol",
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
- "simplyTranslateI2pRedirectsChecks",
- "simplyTranslateI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.simplyTranslateNormalRedirectsChecks,
- ...r.simplyTranslateNormalCustomRedirects,
- ...r.simplyTranslateTorRedirectsChecks,
- ...r.simplyTranslateTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances;
- if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
- else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('simplyTranslate', from, to, 'from_lang');
- utils.copyCookie('simplyTranslate', from, to, 'to_lang');
- utils.copyCookie('simplyTranslate', from, to, 'tts_enabled');
- utils.copyCookie('simplyTranslate', from, to, 'use_text_fields');
- }
- }
- resolve(true);
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(from);
+ if (![
+ ...simplyTranslateNormalRedirectsChecks,
+ ...simplyTranslateNormalCustomRedirects,
+ ...simplyTranslateTorRedirectsChecks,
+ ...simplyTranslateTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
+ if (!test) {
+ let checkedInstances;
+ if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.copyCookie('simplyTranslate', from, to, 'from_lang');
+ utils.copyCookie('simplyTranslate', from, to, 'to_lang');
+ utils.copyCookie('simplyTranslate', from, to, 'tts_enabled');
+ utils.copyCookie('simplyTranslate', from, to, 'use_text_fields');
}
- )
- })
+ }
+ resolve(true);
+ }
+ )
}
function setSimplyTranslateCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateProtocol",
- "translateDisable",
- "translateFrontend",
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
- ],
- r => {
- if (r.translateDisable || r.translateFrontend != 'simplyTranslate') { resolve(); return; }
- let checkedInstances;
- if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
- else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
- utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
- utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
- utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
- }
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ await init();
+ if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; }
+ let checkedInstances;
+ if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
+ utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
+ utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
+ utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
+ }
+ resolve();
+ }
+ )
}
function redirect(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateDisable",
- "translateFrontend",
- "translateProtocol",
- "translateRedirects",
-
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
+ if (translateDisable) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
- "lingvaNormalRedirectsChecks",
- "lingvaNormalCustomRedirects",
- "lingvaTorRedirectsChecks",
- "lingvaTorCustomRedirects",
- ],
- r => {
- if (r.translateDisable) { resolve(); return; };
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; };
+ if (translateFrontend == 'simplyTranslate') {
+ let instancesList;
+ if (translateProtocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
+ if (translateProtocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
+ if (instancesList.length === 0) return;
- if (r.translateFrontend == 'simplyTranslate') {
- let instancesList;
- if (r.translateProtocol == 'normal') instancesList = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects];
- if (r.translateProtocol == 'tor') instancesList = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; };
-
- let randomInstance = utils.getRandomInstance(instancesList)
- resolve(`${randomInstance}/${url.search}`);
- }
- else if (r.translateFrontend == 'lingva') {
- let params_arr = url.search.split('&');
- params_arr[0] = params_arr[0].substring(1);
- let params = {};
- for (let i = 0; i < params_arr.length; i++) {
- let pair = params_arr[i].split('=');
- params[pair[0]] = pair[1];
- }
- let instancesList;
- if (r.translateProtocol == 'normal') instancesList = [...r.lingvaNormalRedirectsChecks, ...r.lingvaNormalCustomRedirects];
- if (r.translateProtocol == 'tor') instancesList = [...r.lingvaTorRedirectsChecks, ...r.lingvaTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}/${url.search}`;
+ }
+ else if (translateFrontend == 'lingva') {
+ let params_arr = url.search.split('&');
+ params_arr[0] = params_arr[0].substring(1);
+ let params = {};
+ for (let i = 0; i < params_arr.length; i++) {
+ let pair = params_arr[i].split('=');
+ params[pair[0]] = pair[1];
+ }
+ let instancesList;
+ if (translateProtocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
+ if (translateProtocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
+ if (instancesList.length === 0) return;
- let randomInstance = utils.getRandomInstance(instancesList)
- if (params.sl && params.tl && params.text) {
- resolve(`${randomInstance}/${params.sl}/${params.tl}/${params.text}`); return;
- }
- resolve(randomInstance);
- }
- }
- )
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ if (params.sl && params.tl && params.text) {
+ return `${randomInstance}/${params.sl}/${params.tl}/${params.text}`
+ }
+ return randomInstance;
+ }
}
function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateDisable",
- "translateFrontend",
- "translateProtocol",
- "translateRedirects",
-
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
-
- "lingvaNormalRedirectsChecks",
- "lingvaNormalCustomRedirects",
- "lingvaTorRedirectsChecks",
- "lingvaTorCustomRedirects",
- ],
- r => {
- if (r.translateDisable) { resolve(); return; };
- const protocolHost = utils.protocolHost(url);
- if (![
- ...r.translateRedirects.simplyTranslate.normal,
- ...r.translateRedirects.simplyTranslate.tor,
+ return new Promise(async resolve => {
+ await init();
+ if (translateDisable) { resolve(); return; }
+ const protocolHost = utils.protocolHost(url);
+ if (![
+ ...translateRedirects.simplyTranslate.normal,
+ ...translateRedirects.simplyTranslate.tor,
- ...r.simplyTranslateNormalCustomRedirects,
- ...r.simplyTranslateTorCustomRedirects,
+ ...simplyTranslateNormalCustomRedirects,
+ ...simplyTranslateTorCustomRedirects,
- ...r.translateRedirects.lingva.normal,
- ...r.translateRedirects.lingva.tor,
+ ...translateRedirects.lingva.normal,
+ ...translateRedirects.lingva.tor,
- ...r.lingvaNormalCustomRedirects,
- ...r.lingvaTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ ...lingvaNormalCustomRedirects,
+ ...lingvaTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (r.translateProtocol == 'normal') {
- if (r.translateFrontend == 'simplyTranslate') instancesList = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects];
- else if (r.translateFrontend == 'lingva') instancesList = [...r.lingvaNormalRedirectsChecks, ...r.lingvaNormalCustomRedirects];
- }
- else if (r.translateProtocol == 'tor') {
- if (r.translateFrontend == 'simplyTranslate') instancesList = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects];
- else if (r.translateFrontend == 'lingva') instancesList = [...r.lingvaTorRedirectsChecks, ...r.lingvaTorCustomRedirects];
- }
+ let instancesList;
+ if (translateProtocol == 'normal') {
+ if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
+ else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
+ }
+ else if (translateProtocol == 'tor') {
+ if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
+ else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
+ }
- const index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
@@ -310,9 +288,7 @@ export default {
initSimplyTranslateCookies,
setSimplyTranslateCookies,
initLingvaLocalStorage,
-
setRedirects,
-
redirect,
initDefaults,
switchInstance,
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 89077fb9..78beb86f 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -32,239 +32,172 @@ function setRedirects(val) {
})
}
-let nitterNormalRedirectsChecks;
+let
+ disableTwitter,
+ twitterProtocol,
+ twitterRedirects,
+ nitterNormalRedirectsChecks,
+ nitterNormalCustomRedirects,
+ nitterTorRedirectsChecks,
+ nitterTorCustomRedirects;
-async function redirect(url, initiator) {
- return new Promise(resolve => {
+function init() {
+ return new Promise(async resolve => {
browser.storage.local.get(
[
"disableTwitter",
"twitterProtocol",
-
"twitterRedirects",
-
"nitterNormalRedirectsChecks",
"nitterNormalCustomRedirects",
-
"nitterTorRedirectsChecks",
"nitterTorCustomRedirects",
],
r => {
- if (r.disableTwitter) { resolve(); return; }
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
- if (url.pathname.split("/").includes("home")) { resolve(); return; }
-
- if (
- initiator &&
- [
- ...r.twitterRedirects.nitter.normal,
- ...r.twitterRedirects.nitter.tor,
- ...r.nitterTorCustomRedirects,
- ...r.nitterNormalCustomRedirects
- ].includes(initiator.origin)
- ) { resolve('BYPASSTAB'); return; }
-
- let instancesList;
- if (r.twitterProtocol == 'normal') instancesList = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects];
- else if (r.twitterProtocol == 'tor') instancesList = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
-
- let randomInstance = utils.getRandomInstance(instancesList)
- console.log('randomInstance', randomInstance);
- // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
- if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video")
- resolve(`${randomInstance}/pic/${encodeURIComponent(`${url.host}${url.pathname}`)}`);
- else if (url.pathname.split("/").includes("tweets"))
- resolve(`${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`);
- else if (url.host == 't.co')
- resolve(`${randomInstance}/t.co${url.pathname}`);
- else
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- )
- })
-}
-
-function reverse(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "twitterRedirects",
- "nitterNormalCustomRedirects",
- "nitterTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (
- ![
- ...r.twitterRedirects.nitter.normal,
- ...r.twitterRedirects.nitter.tor,
- ...r.nitterNormalCustomRedirects,
- ...r.nitterTorCustomRedirects
- ].includes(protocolHost)
- ) { resolve(); return; }
- resolve(`https://twitter.com${url.pathname}${url.search}`);
+ disableTwitter = r.disableTwitter;
+ twitterProtocol = r.twitterProtocol;
+ twitterRedirects = r.twitterRedirects;
+ nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks;
+ nitterNormalCustomRedirects = r.nitterNormalCustomRedirects;
+ nitterTorRedirectsChecks = r.nitterTorRedirectsChecks;
+ nitterTorCustomRedirects = r.nitterTorCustomRedirects;
+ resolve();
}
)
})
}
-function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "twitterRedirects",
- "twitterProtocol",
+init();
+browser.storage.onChanged.addListener(init)
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
+function all() {
+ return [
+ ...nitterNormalRedirectsChecks,
+ ...nitterTorRedirectsChecks,
+ ...nitterNormalCustomRedirects,
+ ...nitterTorCustomRedirects,
+ ];
+}
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.twitterRedirects.nitter.normal,
- ...r.twitterRedirects.nitter.tor,
- ...r.nitterNormalCustomRedirects,
- ...r.nitterTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+function redirect(url, initiator) {
+ if (disableTwitter) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
+ if (url.pathname.split("/").includes("home")) return;
+ if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- let instancesList;
- if (r.twitterProtocol == 'normal') instancesList = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects];
- else if (r.twitterProtocol == 'tor') instancesList = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects];
+ let instancesList;
+ if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
+ else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
+ if (instancesList.length === 0) return;
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const randomInstance = utils.getRandomInstance(instancesList);
+ // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
+ if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video")
+ return `${randomInstance}/pic/${encodeURIComponent(`${url.host}${url.pathname}`)}`;
+ else if (url.pathname.split("/").includes("tweets"))
+ return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`;
+ else if (url.host == 't.co')
+ return `${randomInstance}/t.co${url.pathname}`;
+ else
+ return `${randomInstance}${url.pathname}${url.search}`;
+}
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+function reverse(url) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve; return; }
+ resolve(`https://twitter.com${url.pathname}${url.search}`);
})
}
-function removeXFrameOptions(e) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "twitterRedirects",
- "twitterProtocol",
+function switchInstance(url) {
+ return new Promise(async resolve => {
+ const protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost)) { resolve; return; }
+ let instancesList;
+ if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
+ else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
+ let index = instancesList.indexOf(protocolHost);
+ if (index > -1) instancesList.splice(index, 1);
+ if (instancesList.length === 0) { resolve; return; }
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- ],
- r => {
- let url = new URL(e.url);
- let protocolHost = utils.protocolHost(url);
- if (
- ![
- ...r.twitterRedirects.nitter.normal,
- ...r.twitterRedirects.nitter.tor,
- ...r.nitterNormalCustomRedirects,
- ...r.nitterTorCustomRedirects,
- ].includes(protocolHost) ||
- e.type != 'sub_frame'
- ) { resolve(); return; }
- let isChanged = false;
- for (const i in e.responseHeaders) if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- if (isChanged) resolve({ responseHeaders: e.responseHeaders });
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
+function removeXFrameOptions(e) {
+ let url = new URL(e.url);
+ let protocolHost = utils.protocolHost(url);
+ if (!all().includes(protocolHost) || e.type != 'sub_frame') return;
+ let isChanged = false;
+ for (const i in e.responseHeaders) if (e.responseHeaders[i].name == 'x-frame-options') {
+ e.responseHeaders.splice(i, 1);
+ isChanged = true;
+ }
+ if (isChanged) return { responseHeaders: e.responseHeaders };
+}
+
function initNitterCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "twitterProtocol",
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (
- ![
- ...r.nitterNormalRedirectsChecks,
- ...r.nitterTorRedirectsChecks,
- ...r.nitterNormalCustomRedirects,
- ...r.nitterTorCustomRedirects,
- ].includes(protocolHost)
- ) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(from);
+ if (!all().includes(protocolHost)
+ ) { resolve(); return; }
- if (!test) {
- let checkedInstances;
- if (r.twitterProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects]
- else if (r.twitterProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.copyCookie('nitter', from, to, 'theme');
- utils.copyCookie('nitter', from, to, 'infiniteScroll');
- utils.copyCookie('nitter', from, to, 'stickyProfile');
- utils.copyCookie('nitter', from, to, 'bidiSupport');
- utils.copyCookie('nitter', from, to, 'hideTweetStats');
- utils.copyCookie('nitter', from, to, 'hideBanner');
- utils.copyCookie('nitter', from, to, 'hidePins');
- utils.copyCookie('nitter', from, to, 'hideReplies');
- utils.copyCookie('nitter', from, to, 'squareAvatars');
- utils.copyCookie('nitter', from, to, 'mp4Playback');
- utils.copyCookie('nitter', from, to, 'hlsPlayback');
- utils.copyCookie('nitter', from, to, 'proxyVideos');
- utils.copyCookie('nitter', from, to, 'muteVideos');
- utils.copyCookie('nitter', from, to, 'autoplayGifs');
- }
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances;
+ if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.copyCookie('nitter', from, to, 'theme');
+ utils.copyCookie('nitter', from, to, 'infiniteScroll');
+ utils.copyCookie('nitter', from, to, 'stickyProfile');
+ utils.copyCookie('nitter', from, to, 'bidiSupport');
+ utils.copyCookie('nitter', from, to, 'hideTweetStats');
+ utils.copyCookie('nitter', from, to, 'hideBanner');
+ utils.copyCookie('nitter', from, to, 'hidePins');
+ utils.copyCookie('nitter', from, to, 'hideReplies');
+ utils.copyCookie('nitter', from, to, 'squareAvatars');
+ utils.copyCookie('nitter', from, to, 'mp4Playback');
+ utils.copyCookie('nitter', from, to, 'hlsPlayback');
+ utils.copyCookie('nitter', from, to, 'proxyVideos');
+ utils.copyCookie('nitter', from, to, 'muteVideos');
+ utils.copyCookie('nitter', from, to, 'autoplayGifs');
+ }
+ }
+ resolve(true);
})
}
function setNitterCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "twitterProtocol",
- "disableTwitter",
- "youtubeFrontend",
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- ],
- r => {
- if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (r.youtubeProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects]
- else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('nitter', to, 'theme');
- utils.getCookiesFromStorage('nitter', to, 'infiniteScroll');
- utils.getCookiesFromStorage('nitter', to, 'stickyProfile');
- utils.getCookiesFromStorage('nitter', to, 'bidiSupport');
- utils.getCookiesFromStorage('nitter', to, 'hideTweetStats');
- utils.getCookiesFromStorage('nitter', to, 'hideBanner');
- utils.getCookiesFromStorage('nitter', to, 'hidePins');
- utils.getCookiesFromStorage('nitter', to, 'hideReplies');
- utils.getCookiesFromStorage('nitter', to, 'squareAvatars');
- utils.getCookiesFromStorage('nitter', to, 'mp4Playback');
- utils.getCookiesFromStorage('nitter', to, 'hlsPlayback');
- utils.getCookiesFromStorage('nitter', to, 'proxyVideos');
- utils.getCookiesFromStorage('nitter', to, 'muteVideos');
- utils.getCookiesFromStorage('nitter', to, 'autoplayGifs');
- }
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ await init();
+ if (disableTwitter || twitterProtocol === undefined) { resolve(); return; }
+ let checkedInstances;
+ if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('nitter', to, 'theme');
+ utils.getCookiesFromStorage('nitter', to, 'infiniteScroll');
+ utils.getCookiesFromStorage('nitter', to, 'stickyProfile');
+ utils.getCookiesFromStorage('nitter', to, 'bidiSupport');
+ utils.getCookiesFromStorage('nitter', to, 'hideTweetStats');
+ utils.getCookiesFromStorage('nitter', to, 'hideBanner');
+ utils.getCookiesFromStorage('nitter', to, 'hidePins');
+ utils.getCookiesFromStorage('nitter', to, 'hideReplies');
+ utils.getCookiesFromStorage('nitter', to, 'squareAvatars');
+ utils.getCookiesFromStorage('nitter', to, 'mp4Playback');
+ utils.getCookiesFromStorage('nitter', to, 'hlsPlayback');
+ utils.getCookiesFromStorage('nitter', to, 'proxyVideos');
+ utils.getCookiesFromStorage('nitter', to, 'muteVideos');
+ utils.getCookiesFromStorage('nitter', to, 'autoplayGifs');
+ }
+ resolve();
+ }
+ )
}
function initDefaults() {
@@ -297,14 +230,11 @@ function initDefaults() {
export default {
setRedirects,
-
redirect,
switchInstance,
reverse,
removeXFrameOptions,
-
initNitterCookies,
setNitterCookies,
-
initDefaults,
};
diff --git a/src/assets/javascripts/helpers/utils.js b/src/assets/javascripts/helpers/utils.js
index 38c35364..6d1956f6 100644
--- a/src/assets/javascripts/helpers/utils.js
+++ b/src/assets/javascripts/helpers/utils.js
@@ -313,16 +313,13 @@ function copyRaw(test, copyRawElement) {
let currTab = tabs[0];
if (currTab) {
let url;
- try {
- url = new URL(currTab.url);
- } catch { resolve(); return; }
- let newUrl;
- newUrl = await youtubeHelper.reverse(url);
-
- if (!newUrl) newUrl = await twitterHelper.reverse(url);
- if (!newUrl) newUrl = await instagramHelper.reverse(url);
- if (!newUrl) newUrl = await tiktokHelper.reverse(url);
- if (!newUrl) newUrl = await imgurHelper.reverse(url);
+ try { url = new URL(currTab.url); }
+ catch { resolve(); return; }
+ let newUrl = await youtubeHelper.reverse(url);
+ if (!newUrl) newUrl = twitterHelper.reverse(url);
+ if (!newUrl) newUrl = instagramHelper.reverse(url);
+ if (!newUrl) newUrl = tiktokHelper.reverse(url);
+ if (!newUrl) newUrl = imgurHelper.reverse(url);
if (newUrl) {
resolve(true);
@@ -372,7 +369,7 @@ function unify(test, unifyElement) {
if (!result) result = await translateHelper.initLingvaLocalStorage(test, url);
if (result) {
- if (!test) {
+ if (!test && unifyElement) {
const textElement = unifyElement.getElementsByTagName('h4')[0]
const oldHtml = textElement.innerHTML;
textElement.innerHTML = 'Unified';
@@ -395,17 +392,17 @@ function switchInstance(test) {
try { url = new URL(currTab.url); }
catch { resolve(); return };
let newUrl = await youtubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await twitterHelper.switchInstance(url);
- if (!newUrl) newUrl = await instagramHelper.switchInstance(url);
- if (!newUrl) newUrl = await redditHelper.switchInstance(url);
- if (!newUrl) newUrl = await searchHelper.switchInstance(url);
+ // if (!newUrl) newUrl = twitterHelper.switchInstance(url);
+ // if (!newUrl) newUrl = instagramHelper.switchInstance(url);
+ // if (!newUrl) newUrl = redditHelper.switchInstance(url);
+ // if (!newUrl) newUrl = searchHelper.switchInstance(url);
if (!newUrl) newUrl = await translateHelper.switchInstance(url);
- if (!newUrl) newUrl = await mediumHelper.switchInstance(url);
- if (!newUrl) newUrl = await sendTargetsHelper.switchInstance(url);
- if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
- if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
- if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
+ // if (!newUrl) newUrl = mediumHelper.switchInstance(url);
+ // if (!newUrl) newUrl = sendTargetsHelper.switchInstance(url);
+ // if (!newUrl) newUrl = peertubeHelper.switchInstance(url);
+ // if (!newUrl) newUrl = lbryHelper.switchInstance(url);
+ // if (!newUrl) newUrl = imgurHelper.switchInstance(url);
+ // if (!newUrl) newUrl = wikipediaHelper.switchInstance(url);
if (newUrl) {
if (!test)
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index fa6fd8fc..59351c62 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -26,172 +26,157 @@ function setRedirects(val) {
})
}
-let wikilessNormalRedirectsChecks;
+let
+ disableWikipedia,
+ wikipediaRedirects,
+ wikipediaProtocol,
+ wikilessNormalRedirectsChecks,
+ wikilessTorRedirectsChecks,
+ wikilessI2pRedirectsChecks,
+ wikilessNormalCustomRedirects,
+ wikilessTorCustomRedirects,
+ wikilessI2pCustomRedirects;
-function initWikilessCookies(test, from) {
- return new Promise(resolve => {
+function init() {
+ return new Promise(async resolve => {
browser.storage.local.get(
[
+ "disableWikipedia",
+ "wikipediaRedirects",
"wikipediaProtocol",
+
"wikilessNormalRedirectsChecks",
- "wikilessNormalCustomRedirects",
"wikilessTorRedirectsChecks",
- "wikilessTorCustomRedirects",
"wikilessI2pRedirectsChecks",
- "wikilessI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(from);
- if (![
- ...r.wikilessNormalRedirectsChecks,
- ...r.wikilessNormalCustomRedirects,
- ...r.wikilessTorRedirectsChecks,
- ...r.wikilessTorCustomRedirects,
- ...r.wikilessI2pRedirectsChecks,
- ...r.wikilessI2pCustomRedirects,
- ].includes(protocolHost)) resolve();
-
- if (!test) {
- let checkedInstances;
- if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects]
- else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects]
- else if (r.wikipediaProtocol == 'i2p') checkedInstances = [...r.wikilessI2pRedirectsChecks, ...r.wikilessI2pCustomRedirects]
-
- for (const to of checkedInstances) {
- utils.copyCookie('wikiless', from, to, 'theme');
- utils.copyCookie('wikiless', from, to, 'default_lang');
- }
- }
- resolve(true);
- }
- )
- })
-}
-
-function setWikilessCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableWikipedia",
- "wikipediaProtocol",
- "wikilessNormalRedirectsChecks",
"wikilessNormalCustomRedirects",
- "wikilessTorRedirectsChecks",
"wikilessTorCustomRedirects",
+ "wikilessI2pCustomRedirects",
],
r => {
- if (r.disableWikipedia || r.wikipediaProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects]
- else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects]
- for (const to of checkedInstances) {
- utils.getCookiesFromStorage('wikiless', to, 'theme');
- utils.getCookiesFromStorage('wikiless', to, 'default_lang');
- }
+ disableWikipedia = r.disableWikipedia;
+ wikipediaRedirects = r.wikipediaRedirects;
+ wikipediaProtocol = r.wikipediaProtocol;
+ wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks;
+ wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks;
+ wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks;
+ wikilessNormalCustomRedirects = r.wikilessNormalCustomRedirects;
+ wikilessTorCustomRedirects = r.wikilessTorCustomRedirects;
+ wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects;
resolve();
}
)
})
}
-function redirect(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableWikipedia",
- "wikipediaRedirects",
- "wikipediaProtocol",
+init();
+browser.storage.onChanged.addListener(init)
- "wikilessNormalRedirectsChecks",
- "wikilessTorRedirectsChecks",
- "wikilessI2pRedirectsChecks",
- "wikilessNormalCustomRedirects",
- "wikilessTorCustomRedirects",
- "wikilessI2pCustomRedirects",
- ],
- r => {
- if (r.disableWikipedia) { resolve(); return; }
- if (!targets.test(url.href)) { resolve(); return; }
+function initWikilessCookies(test, from) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(from);
+ const all = [
+ ...wikilessNormalRedirectsChecks,
+ ...wikilessNormalCustomRedirects,
+ ...wikilessTorRedirectsChecks,
+ ...wikilessTorCustomRedirects,
+ ...wikilessI2pRedirectsChecks,
+ ...wikilessI2pCustomRedirects,
+ ];
+ if (!all.includes(protocolHost)) { resolve(); return; }
- let GETArguments = [];
- if (url.search.length > 0) {
- let search = url.search.substring(1); //get rid of '?'
- let argstrings = search.split("&");
- for (let i = 0; i < argstrings.length; i++) {
- let args = argstrings[i].split("=");
- GETArguments.push([args[0], args[1]]);
- }
- }
- let instancesList;
- if (r.wikipediaProtocol == 'normal') instancesList = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects];
- else if (r.wikipediaProtocol == 'tor') instancesList = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects];
- else if (r.wikipediaProtocol == 'i2p') instancesList = [...r.wikilessI2pRedirectsChecks, ...r.wikilessI2pCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList)
+ if (!test) {
+ let checkedInstances;
+ if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ else if (wikipediaProtocol == 'i2p') checkedInstances = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects]
- let link = `${randomInstance}${url.pathname}`;
- let urlSplit = url.host.split(".");
- if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
- if (urlSplit[0] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- else
- GETArguments.push(["lang", urlSplit[0]]);
- if (urlSplit[1] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- // wikiless doesn't have mobile view support yet
- }
- for (let i = 0; i < GETArguments.length; i++)
- link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
-
- resolve(link);
+ for (const to of checkedInstances) {
+ utils.copyCookie('wikiless', from, to, 'theme');
+ utils.copyCookie('wikiless', from, to, 'default_lang');
}
- )
+ }
+ resolve(true);
})
}
-function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "wikipediaRedirects",
- "wikipediaProtocol",
+function setWikilessCookies() {
+ return new Promise(async resolve => {
+ await init();
+ if (disableWikipedia || wikipediaProtocol === undefined) { resolve(); return; }
+ let checkedInstances;
+ if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ for (const to of checkedInstances) {
+ utils.getCookiesFromStorage('wikiless', to, 'theme');
+ utils.getCookiesFromStorage('wikiless', to, 'default_lang');
+ }
+ resolve();
+ })
+}
- "wikilessNormalRedirectsChecks",
- "wikilessTorRedirectsChecks",
+function redirect(url) {
+ if (disableWikipedia) return;
+ if (!targets.test(url.href)) return;
- "wikilessI2pRedirectsChecks",
- "wikilessNormalCustomRedirects",
+ let GETArguments = [];
+ if (url.search.length > 0) {
+ let search = url.search.substring(1); //get rid of '?'
+ let argstrings = search.split("&");
+ for (let i = 0; i < argstrings.length; i++) {
+ let args = argstrings[i].split("=");
+ GETArguments.push([args[0], args[1]]);
+ }
+ }
+ let instancesList;
+ if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
+ else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
+ else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects];
+ if (instancesList.length === 0) return;
+ const randomInstance = utils.getRandomInstance(instancesList)
- "wikilessTorCustomRedirects",
- "wikilessI2pCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
+ let link = `${randomInstance}${url.pathname}`;
+ let urlSplit = url.host.split(".");
+ if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
+ if (urlSplit[0] == "m")
+ GETArguments.push(["mobileaction", "toggle_view_mobile"]);
+ else
+ GETArguments.push(["lang", urlSplit[0]]);
+ if (urlSplit[1] == "m")
+ GETArguments.push(["mobileaction", "toggle_view_mobile"]);
+ // wikiless doesn't have mobile view support yet
+ }
+ for (let i = 0; i < GETArguments.length; i++)
+ link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
+ return link;
+}
- let wikipediaList = [
- ...r.wikipediaRedirects.wikiless.normal,
- ...r.wikipediaRedirects.wikiless.tor,
- ...r.wikipediaRedirects.wikiless.i2p,
+function switchInstance(url) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ const wikipediaList = [
+ ...wikipediaRedirects.wikiless.normal,
+ ...wikipediaRedirects.wikiless.tor,
+ ...wikipediaRedirects.wikiless.i2p,
- ...r.wikilessNormalCustomRedirects,
- ...r.wikilessTorCustomRedirects,
- ...r.wikilessI2pCustomRedirects
- ]
- if (!wikipediaList.includes(protocolHost)) resolve();
+ ...wikilessNormalCustomRedirects,
+ ...wikilessTorCustomRedirects,
+ ...wikilessI2pCustomRedirects
+ ]
+ if (!wikipediaList.includes(protocolHost)) return;
- let instancesList;
- if (r.wikipediaProtocol == 'normal') instancesList = [...r.wikilessNormalCustomRedirects, ...r.wikilessNormalRedirectsChecks];
- else if (r.wikipediaProtocol == 'tor') instancesList = [...r.wikilessTorCustomRedirects, ...r.wikilessTorRedirectsChecks];
- else if (r.wikipediaProtocol == 'i2p') instancesList = [...r.wikilessI2pCustomRedirects, ...r.wikilessI2pRedirectsChecks];
+ let instancesList;
+ if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalCustomRedirects, ...wikilessNormalRedirectsChecks];
+ else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorCustomRedirects, ...wikilessTorRedirectsChecks];
+ else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) resolve();
+ let index = instancesList.indexOf(protocolHost);
+ if (index > -1) instancesList.splice(index, 1);
+ if (instancesList.length === 0) return;
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return `${randomInstance}${url.pathname}${url.search}`;
})
}
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 989e3f61..5660f448 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -57,16 +57,26 @@ function setRedirects(val) {
}
let
+ disableYoutube,
+ OnlyEmbeddedVideo,
+ youtubeFrontend,
+ youtubeProtocol,
+ youtubeEmbedFrontend,
+ youtubeRedirects,
invidiousNormalRedirectsChecks,
+ invidiousNormalCustomRedirects,
invidiousTorRedirectsChecks,
-
+ invidiousTorCustomRedirects,
pipedNormalRedirectsChecks,
+ pipedNormalCustomRedirects,
pipedTorRedirectsChecks,
-
+ pipedTorCustomRedirects,
pipedMaterialNormalRedirectsChecks,
- pipedMaterialTorRedirectsChecks;
+ pipedMaterialNormalCustomRedirects,
+ pipedMaterialTorRedirectsChecks,
+ pipedMaterialTorCustomRedirects;
-function redirect(url, details, initiator) {
+function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
@@ -75,231 +85,184 @@ function redirect(url, details, initiator) {
"youtubeFrontend",
"youtubeProtocol",
"youtubeEmbedFrontend",
-
"youtubeRedirects",
-
"invidiousNormalRedirectsChecks",
"invidiousNormalCustomRedirects",
-
"invidiousTorRedirectsChecks",
"invidiousTorCustomRedirects",
-
"pipedNormalRedirectsChecks",
"pipedNormalCustomRedirects",
-
"pipedTorRedirectsChecks",
"pipedTorCustomRedirects",
-
"pipedMaterialNormalRedirectsChecks",
"pipedMaterialNormalCustomRedirects",
-
"pipedMaterialTorRedirectsChecks",
"pipedMaterialTorCustomRedirects",
],
r => {
- if (r.disableYoutube) { resolve(); return; }
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
+ disableYoutube = r.disableYoutube;
+ OnlyEmbeddedVideo = r.OnlyEmbeddedVideo;
+ youtubeFrontend = r.youtubeFrontend;
+ youtubeProtocol = r.youtubeProtocol;
+ youtubeEmbedFrontend = r.youtubeEmbedFrontend;
+ youtubeRedirects = r.youtubeRedirects;
+ invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks;
+ invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects;
+ invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks;
+ invidiousTorCustomRedirects = r.invidiousTorCustomRedirects;
+ pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks;
+ pipedNormalCustomRedirects = r.pipedNormalCustomRedirects;
+ pipedTorRedirectsChecks = r.pipedTorRedirectsChecks;
+ pipedTorCustomRedirects = r.pipedTorCustomRedirects;
+ pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks;
+ pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects;
+ pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
+ pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects;
+ resolve();
+ }
+ )
+ })
+}
- if (
- initiator && (
- [
- ...r.youtubeRedirects.invidious.normal,
- ...r.invidiousNormalCustomRedirects,
- ...r.youtubeRedirects.invidious.tor,
- ...r.invidiousTorCustomRedirects,
+init();
+browser.storage.onChanged.addListener(init)
- ...r.youtubeRedirects.piped.normal,
- ...r.youtubeRedirects.piped.tor,
- ...r.pipedNormalCustomRedirects,
- ...r.pipedTorCustomRedirects
- ].includes(initiator.origin)
- )
- ) { resolve('BYPASSTAB'); return; }
+function all() {
+ return [
+ ...youtubeRedirects.invidious.normal,
+ ...youtubeRedirects.invidious.tor,
- const isInvidious = r.youtubeFrontend == 'invidious';
- const isPiped = r.youtubeFrontend == 'piped';
- const isPipedMaterial = r.youtubeFrontend == 'pipedMaterial'
- const isFreetube = r.youtubeFrontend == 'freetube';
- const isYatte = r.youtubeFrontend == 'yatte';
+ ...youtubeRedirects.piped.normal,
+ ...youtubeRedirects.piped.tor,
- const isFrontendYoutube = r.youtubeEmbedFrontend == "youtube";
- const isFrontendInvidious = r.youtubeEmbedFrontend == 'invidious';
- const isFrontendPiped = r.youtubeEmbedFrontend == 'piped';
- const isFrontendPipedMaterial = r.youtubeEmbedFrontend == 'pipedMaterial';
+ ...youtubeRedirects.pipedMaterial.normal,
+ ...youtubeRedirects.pipedMaterial.tor,
- const isOnlyEmbeddedVideo = r.OnlyEmbeddedVideo == 'onlyNotEmbedded';
- const isOnlyNotEmbedded = r.OnlyEmbeddedVideo == 'onlyNotEmbedded'
+ ...invidiousNormalCustomRedirects,
+ ...invidiousTorCustomRedirects,
- const is_main_frame = details.type === "main_frame";
- const is_sub_frame = details.type === "sub_frame";
+ ...pipedNormalCustomRedirects,
+ ...pipedTorCustomRedirects,
- if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) { resolve(); return; } // Don't redirect YouTube Player API.
+ ...pipedMaterialNormalCustomRedirects,
+ ...pipedMaterialTorCustomRedirects,
+ ];
+}
- if (r.youtubeFrontend == 'yatte' && is_main_frame)
- resolve(url.href.replace(/^https?:\/{2}/, 'yattee://'));
+function redirect(url, details, initiator) {
+ if (disableYoutube) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
+ if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- else if (isFreetube && is_main_frame)
- resolve(`freetube://https:${url.pathname}${url.search}`);
+ const isInvidious = youtubeFrontend == 'invidious';
+ const isPiped = youtubeFrontend == 'piped';
+ const isPipedMaterial = youtubeFrontend == 'pipedMaterial'
+ const isFreetube = youtubeFrontend == 'freetube';
+ const isYatte = youtubeFrontend == 'yatte';
- else if (isFreetube && params && isFrontendYoutube)
- resolve();
+ const isFrontendYoutube = youtubeEmbedFrontend == "youtube";
+ const isFrontendInvidious = youtubeEmbedFrontend == 'invidious';
+ const isFrontendPiped = youtubeEmbedFrontend == 'piped';
+ const isFrontendPipedMaterial = youtubeEmbedFrontend == 'pipedMaterial';
- else if (isInvidious || ((isFreetube || isYatte) && isFrontendInvidious && is_sub_frame)) {
+ const isOnlyEmbeddedVideo = OnlyEmbeddedVideo == 'onlyNotEmbedded';
+ const isOnlyNotEmbedded = OnlyEmbeddedVideo == 'onlyNotEmbedded'
- if (isOnlyEmbeddedVideo && !is_sub_frame) { resolve(); return; }
- if (isOnlyNotEmbedded && params && !((isFreetube || isYatte) && isFrontendInvidious && is_sub_frame)) { resolve(); return; }
+ const is_main_frame = details.type === "main_frame";
+ const is_sub_frame = details.type === "sub_frame";
- let instancesList;
- if (r.youtubeProtocol == 'normal') instancesList = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects];
- else if (r.youtubeProtocol == 'tor') instancesList = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
+ if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return; // Don't redirect YouTube Player API.
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- } else if (isPiped || ((isFreetube || isYatte) && isFrontendPiped && is_sub_frame)) {
+ if (youtubeFrontend == 'yatte' && is_main_frame)
+ return url.href.replace(/^https?:\/{2}/, 'yattee://');
- if (isOnlyEmbeddedVideo && !is_sub_frame) { resolve(); return; }
- if (
- isOnlyNotEmbedded && params &&
- !((isFreetube || isYatte) && isFrontendPiped && is_sub_frame)
- ) { resolve(); return; }
+ else if (isFreetube && is_main_frame)
+ return `freetube://https:${url.pathname}${url.search}`;
- let instancesList;
- if (r.youtubeProtocol == 'normal') instancesList = [...r.pipedNormalRedirectsChecks, ...r.pipedNormalCustomRedirects];
- else if (r.youtubeProtocol == 'tor') instancesList = [...r.pipedTorRedirectsChecks, ...r.pipedTorCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
+ else if (isFreetube && params && isFrontendYoutube)
+ return;
- resolve(`${randomInstance}${url.pathname}${url.search}`)
- }
- else if (isPipedMaterial || ((isFreetube || isYatte) && isFrontendPipedMaterial && is_sub_frame)) {
- if (isOnlyEmbeddedVideo && details.type !== "sub_frame") { resolve(); return; }
- if (
- isOnlyNotEmbedded && params &&
- !((isFreetube || isYatte) && isFrontendPipedMaterial && is_sub_frame)
- ) { resolve(); return; }
+ else if (isInvidious || ((isFreetube || isYatte) && isFrontendInvidious && is_sub_frame)) {
- let instancesList;
- if (r.youtubeProtocol == 'normal') instancesList = [...r.pipedMaterialNormalRedirectsChecks, ...r.pipedMaterialNormalCustomRedirects];
- else if (r.youtubeProtocol == 'tor') instancesList = [...r.pipedMaterialTorRedirectsChecks, ...r.pipedMaterialTorCustomRedirects];
- let randomInstance = utils.getRandomInstance(instancesList);
+ if (isOnlyEmbeddedVideo && !is_sub_frame) return;
+ if (isOnlyNotEmbedded && params && !((isFreetube || isYatte) && isFrontendInvidious && is_sub_frame)) return;
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- else resolve('CANCEL');
- }
- )
- })
-}
+ let instancesList;
+ if (youtubeProtocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
+ else if (youtubeProtocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
+ if (instancesList.length === 0) return;
+ let randomInstance = utils.getRandomInstance(instancesList);
-function reverse(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "youtubeRedirects",
- "invidiousNormalCustomRedirects",
- "invidiousTorCustomRedirects",
- "pipedNormalCustomRedirects",
- "pipedTorCustomRedirects",
- "pipedMaterialNormalCustomRedirects",
- "pipedMaterialTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.youtubeRedirects.invidious.normal,
- ...r.youtubeRedirects.invidious.tor,
+ return `${randomInstance}${url.pathname}${url.search}`;
+ } else if (isPiped || ((isFreetube || isYatte) && isFrontendPiped && is_sub_frame)) {
- ...r.youtubeRedirects.piped.normal,
- ...r.youtubeRedirects.piped.tor,
+ if (isOnlyEmbeddedVideo && !is_sub_frame) return;
+ if (
+ isOnlyNotEmbedded && params &&
+ !((isFreetube || isYatte) && isFrontendPiped && is_sub_frame)
+ ) return;
- ...r.youtubeRedirects.pipedMaterial.normal,
- ...r.youtubeRedirects.pipedMaterial.tor,
+ let instancesList;
+ if (youtubeProtocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
+ else if (youtubeProtocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
+ if (instancesList.length === 0) return;
- ...r.invidiousNormalCustomRedirects,
- ...r.invidiousTorCustomRedirects,
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return `${randomInstance}${url.pathname}${url.search}`;
+ }
+ else if (isPipedMaterial || ((isFreetube || isYatte) && isFrontendPipedMaterial && is_sub_frame)) {
+ if (isOnlyEmbeddedVideo && details.type !== "sub_frame") return;
+ if (
+ isOnlyNotEmbedded && params &&
+ !((isFreetube || isYatte) && isFrontendPipedMaterial && is_sub_frame)
+ ) return;
- ...r.pipedNormalCustomRedirects,
- ...r.pipedTorCustomRedirects,
+ let instancesList;
+ if (youtubeProtocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
+ else if (youtubeProtocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
- ...r.pipedMaterialNormalCustomRedirects,
- ...r.pipedMaterialTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ const randomInstance = utils.getRandomInstance(instancesList);
+ return `${randomInstance}${url.pathname}${url.search}`;
+ }
+ else return 'CANCEL';
+}
- resolve(`https://youtube.com${url.pathname}${url.search}`);
- })
+function reverse(url) {
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ const instances = all();
+ if (!instances.includes(protocolHost)) { resolve(); return; }
+
+ resolve(`https://youtube.com${url.pathname}${url.search}`);
})
}
function switchInstance(url) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "youtubeRedirects",
- "youtubeFrontend",
- "youtubeProtocol",
-
- "invidiousNormalRedirectsChecks",
- "invidiousNormalCustomRedirects",
-
- "invidiousTorRedirectsChecks",
- "invidiousTorCustomRedirects",
-
- "pipedNormalRedirectsChecks",
- "pipedNormalCustomRedirects",
-
- "pipedTorRedirectsChecks",
- "pipedTorCustomRedirects",
-
- "pipedMaterialNormalRedirectsChecks",
- "pipedMaterialNormalCustomRedirects",
-
- "pipedMaterialTorRedirectsChecks",
- "pipedMaterialTorCustomRedirects",
- ],
- r => {
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.youtubeRedirects.invidious.normal,
- ...r.youtubeRedirects.invidious.tor,
-
- ...r.youtubeRedirects.piped.normal,
- ...r.youtubeRedirects.piped.tor,
-
- ...r.youtubeRedirects.pipedMaterial.normal,
- ...r.youtubeRedirects.pipedMaterial.tor,
-
- ...r.invidiousNormalCustomRedirects,
- ...r.invidiousTorCustomRedirects,
-
- ...r.pipedNormalCustomRedirects,
- ...r.pipedTorCustomRedirects,
-
- ...r.pipedMaterialNormalCustomRedirects,
- ...r.pipedMaterialTorCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
-
+ return new Promise(async resolve => {
+ await init();
+ const protocolHost = utils.protocolHost(url);
+ const instances = all();
+ if (!instances.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (r.youtubeProtocol == 'normal') {
- if (r.youtubeFrontend == 'invidious') instancesList = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects];
- else if (r.youtubeFrontend == 'piped') instancesList = [...r.pipedNormalRedirectsChecks, ...r.pipedNormalCustomRedirects];
- else if (r.youtubeFrontend == 'pipedMaterial') instancesList = [...r.pipedMaterialNormalRedirectsChecks, ...r.pipedMaterialNormalCustomRedirects];
- }
- else if (r.youtubeProtocol == 'tor') {
- if (r.youtubeFrontend == 'invidious') instancesList = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects];
- else if (r.youtubeFrontend == 'piped') instancesList = [...r.pipedTorRedirectsChecks, ...r.pipedTorCustomRedirects];
- else if (r.youtubeFrontend == 'pipedMaterial') instancesList = [...r.pipedMaterialTorRedirectsChecks, ...r.pipedMaterialTorCustomRedirects];
- }
+ let instancesList;
+ if (youtubeProtocol == 'normal') {
+ if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
+ else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
+ else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
+ }
+ else if (youtubeProtocol == 'tor') {
+ if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
+ else if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
+ else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length == 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost);
+ if (i > -1) instancesList.splice(i, 1);
+ if (instancesList.length == 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- }
- )
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(`${randomInstance}${url.pathname}${url.search}`);
})
}
@@ -365,207 +328,130 @@ function initDefaults() {
}
function initInvidiousCookies(test, from) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "youtubeProtocol",
- "youtubeFrontend",
- "invidiousNormalRedirectsChecks",
- "invidiousNormalCustomRedirects",
- "invidiousTorRedirectsChecks",
- "invidiousTorCustomRedirects",
- ],
- r => {
- if (r.disableYoutube || r.youtubeFrontend != 'invidious') { resolve(); return; }
- const protocolHost = utils.protocolHost(from);
- if (![
- ...r.invidiousNormalRedirectsChecks,
- ...r.invidiousTorRedirectsChecks,
- ...r.invidiousNormalCustomRedirects,
- ...r.invidiousTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances;
- if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
- else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- utils.copyCookie('invidious', from, to, 'PREFS');
- }
- resolve(true);
- }
- )
- })
+ return new Promise(async resolve => {
+ await init();
+ if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
+ const protocolHost = utils.protocolHost(from);
+ if (![
+ ...invidiousNormalRedirectsChecks,
+ ...invidiousTorRedirectsChecks,
+ ...invidiousNormalCustomRedirects,
+ ...invidiousTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
+ if (!test) {
+ let checkedInstances;
+ if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ const i = checkedInstances.indexOf(protocolHost);
+ if (i !== -1) checkedInstances.splice(i, 1);
+ for (const to of checkedInstances)
+ utils.copyCookie('invidious', from, to, 'PREFS');
+ }
+ resolve(true);
+ }
+ )
}
function setInvidiousCookies() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "youtubeProtocol",
- "youtubeFrontend",
- "invidiousNormalRedirectsChecks",
- "invidiousNormalCustomRedirects",
- "invidiousTorRedirectsChecks",
- "invidiousTorCustomRedirects",
- ],
- r => {
- if (r.disableYoutube || r.youtubeFrontend != 'invidious') { resolve(); return; }
- let checkedInstances;
- if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
- else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
- for (const to of checkedInstances)
- utils.getCookiesFromStorage('invidious', to, 'PREFS');
- resolve();
- }
- )
+ return new Promise(async resolve => {
+ await init();
+ if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
+ let checkedInstances;
+ if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ for (const to of checkedInstances)
+ utils.getCookiesFromStorage('invidious', to, 'PREFS');
+ resolve();
})
}
function initPipedLocalStorage(test, url, tabId) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "youtubeProtocol",
- "youtubeFrontend",
- "pipedNormalRedirectsChecks",
- "pipedNormalCustomRedirects",
- "pipedTorRedirectsChecks",
- "pipedTorCustomRedirects",
- ],
- r => {
- if (r.disableYoutube || r.youtubeFrontend != 'piped') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...r.pipedNormalCustomRedirects,
- ...r.pipedNormalRedirectsChecks,
- ...r.pipedTorRedirectsChecks,
- ...r.pipedTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init();
+ console.log('initPipedLocalStorage');
+ if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
+ const protocolHost = utils.protocolHost(url);
+ if (![
+ ...pipedNormalCustomRedirects,
+ ...pipedNormalRedirectsChecks,
+ ...pipedTorRedirectsChecks,
+ ...pipedTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/helpers/youtube/get_piped_preferences.js", runAt: "document_start" });
+ if (!test) {
- let checkedInstances;
- if (r.youtubeProtocol == 'normal') checkedInstances = [...r.pipedNormalCustomRedirects, ...r.pipedNormalRedirectsChecks]
- else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.pipedTorRedirectsChecks, ...r.pipedTorCustomRedirects]
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/youtube/set_piped_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
+ browser.tabs.executeScript(tabId, { file: "/assets/javascripts/helpers/youtube/get_piped_preferences.js", runAt: "document_start" });
+
+ let checkedInstances;
+ if (youtubeProtocol == 'normal') checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
+ else if (youtubeProtocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ const i = checkedInstances.indexOf(protocolHost);
+ if (i !== -1) checkedInstances.splice(i, 1);
+ for (const to of checkedInstances) {
+ browser.tabs.create(
+ { url: checkedInstances[0] },
+ tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/youtube/set_piped_preferences.js", runAt: "document_start" })
+ );
}
- )
+ }
+ resolve(true);
})
}
function initPipedMaterialLocalStorage(test, url, tabId,) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "youtubeProtocol",
- "youtubeFrontend",
- "pipedMaterialNormalRedirectsChecks",
- "pipedMaterialNormalCustomRedirects",
- "pipedMaterialTorRedirectsChecks",
- "pipedMaterialTorCustomRedirects",
- ],
- r => {
- if (r.disableYoutube || r.youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...r.pipedMaterialNormalRedirectsChecks,
- ...r.pipedMaterialNormalCustomRedirects,
- ...r.pipedMaterialTorRedirectsChecks,
- ...r.pipedMaterialTorCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init();
+ if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
+ const protocolHost = utils.protocolHost(url);
+ if (![
+ ...pipedMaterialNormalRedirectsChecks,
+ ...pipedMaterialNormalCustomRedirects,
+ ...pipedMaterialTorRedirectsChecks,
+ ...pipedMaterialTorCustomRedirects,
+ ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js", runAt: "document_start" });
+ if (!test) {
+ browser.tabs.executeScript(tabId, { file: "/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js", runAt: "document_start" });
- let checkedInstances;
- if (r.youtubeProtocol == 'normal') checkedInstances = [...r.pipedMaterialNormalRedirectsChecks, ...r.pipedMaterialNormalCustomRedirects]
- else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.pipedMaterialTorRedirectsChecks, ...r.pipedMaterialTorCustomRedirects]
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- }
- )
+ let checkedInstances;
+ if (youtubeProtocol == 'normal') checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ else if (youtubeProtocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ const i = checkedInstances.indexOf(protocolHost);
+ if (i !== -1) checkedInstances.splice(i, 1);
+ for (const to of checkedInstances)
+ browser.tabs.create(
+ { url: to },
+ tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" })
+ );
+ }
+ resolve(true);
})
}
function removeXFrameOptions(e) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "youtubeRedirects",
- "invidiousNormalCustomRedirects",
- "invidiousTorCustomRedirects",
-
- "pipedNormalCustomRedirects",
- "pipedTorCustomRedirects",
-
- "pipedMaterialNormalCustomRedirects",
- "pipedMaterialTorCustomRedirects",
- ],
- r => {
- const url = new URL(e.url);
- let protocolHost = utils.protocolHost(url);
- if (![
- ...r.youtubeRedirects.invidious.normal,
- ...r.youtubeRedirects.invidious.tor,
- ...r.youtubeRedirects.piped.normal,
- ...r.youtubeRedirects.piped.tor,
-
- ...r.invidiousNormalCustomRedirects,
- ...r.invidiousTorCustomRedirects,
+ const url = new URL(e.url);
+ let protocolHost = utils.protocolHost(url);
+ const instances = all();
+ if (!instances.includes(protocolHost) || e.type != 'sub_frame') return;
- ...r.pipedNormalCustomRedirects,
- ...r.pipedTorCustomRedirects,
-
- ...r.pipedMaterialNormalCustomRedirects,
- ...r.pipedMaterialTorCustomRedirects,
- ].includes(protocolHost) || e.type != 'sub_frame') { resolve(); return; }
- let isChanged = false;
- for (const i in e.responseHeaders)
- if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- if (isChanged) resolve({ responseHeaders: e.responseHeaders });
- })
- })
+ let isChanged = false;
+ for (const i in e.responseHeaders)
+ if (e.responseHeaders[i].name == 'x-frame-options') {
+ e.responseHeaders.splice(i, 1);
+ isChanged = true;
+ }
+ if (isChanged) return { responseHeaders: e.responseHeaders };
}
export default {
setRedirects,
+ initPipedLocalStorage,
initPipedMaterialLocalStorage,
initInvidiousCookies,
setInvidiousCookies,
-
redirect,
reverse,
-
switchInstance,
-
- initPipedLocalStorage,
-
initDefaults,
-
removeXFrameOptions,
};
diff --git a/src/assets/javascripts/helpers/youtubeMusic.js b/src/assets/javascripts/helpers/youtubeMusic.js
index 1b194c19..68fa4f24 100644
--- a/src/assets/javascripts/helpers/youtubeMusic.js
+++ b/src/assets/javascripts/helpers/youtubeMusic.js
@@ -16,59 +16,69 @@ let redirects = {
},
};
-function redirect(url, type, initiator) {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutubeMusic",
+let
+ disableYoutubeMusic,
+ beatbumpNormalRedirectsChecks,
+ beatbumpNormalCustomRedirects;
+
+function init() {
+ browser.storage.local.get(
+ [
+ "disableYoutubeMusic",
+ "beatbumpNormalRedirectsChecks",
+ "beatbumpNormalCustomRedirects",
+ ],
+ r => {
+ disableYoutubeMusic = r.disableYoutubeMusic;
+ beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks;
+ beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects;
+ }
+ )
+}
- "beatbumpNormalRedirectsChecks",
- "beatbumpNormalCustomRedirects",
- ],
- r => {
- /*
- Video
- https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
- https://beatbump.ml/listen?id=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
+init();
+browser.storage.onChanged.addListener(init)
- Playlist
- https://music.youtube.com/playlist?list=PLqxd0OMLeWy64zlwhjouj92ISc38FbOns
- https://music.youtube.com/playlist?list=PLqxd0OMLeWy7lrJSzt9LnOJjbC1IaruPM
- https://music.youtube.com/playlist?list=PLQod4DlD72ZMJmOrSNbmEmK_iZ1oXPzKd
- https://beatbump.ml/playlist/VLPLqxd0OMLeWy64zlwhjouj92ISc38FbOns
+/*
+Video
+https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
+https://beatbump.ml/listen?id=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
- Channel
- https://music.youtube.com/channel/UCfgmMDI7T5tOQqjnOBRe_wg
- https://beatbump.ml/artist/UCfgmMDI7T5tOQqjnOBRe_wg
+Playlist
+https://music.youtube.com/playlist?list=PLqxd0OMLeWy64zlwhjouj92ISc38FbOns
+https://music.youtube.com/playlist?list=PLqxd0OMLeWy7lrJSzt9LnOJjbC1IaruPM
+https://music.youtube.com/playlist?list=PLQod4DlD72ZMJmOrSNbmEmK_iZ1oXPzKd
+https://beatbump.ml/playlist/VLPLqxd0OMLeWy64zlwhjouj92ISc38FbOns
- Albums
- https://music.youtube.com/playlist?list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
- https://music.youtube.com/playlist?list=OLAK5uy_lcr5O1zS8f6WIFI_yxqVp2RK9Dyy2bbw0
- https://beatbump.ml/release?id=MPREb_3DURc4yEUtD
- https://beatbump.ml/release?id=MPREb_evaZrV1WNdS
+Channel
+https://music.youtube.com/channel/UCfgmMDI7T5tOQqjnOBRe_wg
+https://beatbump.ml/artist/UCfgmMDI7T5tOQqjnOBRe_wg
- https://music.youtube.com/playlist?list=OLAK5uy_n6OHVllUZUCnlIY1m-gUaH8uqkN3Y-Ca8
- https://music.youtube.com/playlist?list=OLAK5uy_nBOTxAc3_RGB82-Z54jdARGxGaCYlpngY
- https://beatbump.ml/release?id=MPREb_QygdC0wEoLe
+Albums
+https://music.youtube.com/playlist?list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
+https://music.youtube.com/playlist?list=OLAK5uy_lcr5O1zS8f6WIFI_yxqVp2RK9Dyy2bbw0
+https://beatbump.ml/release?id=MPREb_3DURc4yEUtD
+https://beatbump.ml/release?id=MPREb_evaZrV1WNdS
- https://music.youtube.com/watch?v=R6gSMSYKhKU&list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
- */
- if (r.disableYoutubeMusic) { resolve(); return; }
- if (!targets.some(rx => rx.test(url.href))) { resolve(); return; }
+https://music.youtube.com/playlist?list=OLAK5uy_n6OHVllUZUCnlIY1m-gUaH8uqkN3Y-Ca8
+https://music.youtube.com/playlist?list=OLAK5uy_nBOTxAc3_RGB82-Z54jdARGxGaCYlpngY
+https://beatbump.ml/release?id=MPREb_QygdC0wEoLe
- let instancesList = [...r.beatbumpNormalRedirectsChecks, ...r.beatbumpNormalCustomRedirects];
- if (instancesList.length === 0) { resolve(); return; }
- let randomInstance = utils.getRandomInstance(instancesList);
+https://music.youtube.com/watch?v=R6gSMSYKhKU&list=OLAK5uy_n-9HVh3cryV2gREZM9Sc0JwEKYjjfi0dU
+*/
+function redirect(url, type, initiator) {
+ if (disableYoutubeMusic) return;
+ if (!targets.some(rx => rx.test(url.href))) return;
- resolve(
- `${randomInstance}${url.pathname}${url.search}`
- .replace("/watch?v=", "/listen?id=")
- .replace("/channel/", "/artist/")
- .replace("/playlist?list=", "/playlist/VL")
- );
- }
- )
- })
+ let instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
+ if (instancesList.length === 0) return;
+ const randomInstance = utils.getRandomInstance(instancesList);
+ resolve(
+ `${randomInstance}${url.pathname}${url.search}`
+ .replace("/watch?v=", "/listen?id=")
+ .replace("/channel/", "/artist/")
+ .replace("/playlist?list=", "/playlist/VL")
+ );
}
async function initDefaults() {
diff --git a/src/manifest.json b/src/manifest.json
index c0d5621d..c82d6449 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -1,7 +1,7 @@
{
"name": "__MSG_extensionName__",
"description": "__MSG_extensionDescription__",
- "version": "1.7.0",
+ "version": "2.0.0",
"manifest_version": 2,
"browser_specific_settings": {
"gecko": {
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 211ecf98..aef21cd3 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -19,19 +19,8 @@ import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js";
import peertubeHelper from "../../assets/javascripts/helpers/peertube.js";
import lbryHelper from "../../assets/javascripts/helpers/lbry.js";
-
window.browser = window.browser || window.chrome;
-youtubeHelper.setInvidiousCookies();
-translateHelper.setSimplyTranslateCookies();
-twitterHelper.setNitterCookies();
-wikipediaHelper.setWikilessCookies();
-searchHelper.setSearxCookies();
-searchHelper.setSearxngCookies();
-redditHelper.setLibredditCookies();
-redditHelper.setTedditCookies();
-tiktokHelper.setProxiTokCookies();
-
browser.runtime.onInstalled.addListener(
async details => {
if (details.reason == 'install') {
@@ -58,8 +47,15 @@ browser.runtime.onInstalled.addListener(
}
)
-async function wholeInit() {
-}
+youtubeHelper.setInvidiousCookies();
+translateHelper.setSimplyTranslateCookies();
+twitterHelper.setNitterCookies();
+wikipediaHelper.setWikilessCookies();
+searchHelper.setSearxCookies();
+searchHelper.setSearxngCookies();
+redditHelper.setLibredditCookies();
+redditHelper.setTedditCookies();
+tiktokHelper.setProxiTokCookies();
let incognitoInit = false;
browser.tabs.onCreated.addListener(
@@ -75,39 +71,39 @@ browser.tabs.onCreated.addListener(
let BYPASSTABs = [];
browser.webRequest.onBeforeRequest.addListener(
- async details => {
+ details => {
const url = new URL(details.url);
if (new RegExp(/^chrome-extension:\/{2}.*\/instances\/(blocklist|data).json$/).test(url.href) && details.type == 'xmlhttprequest') return;
- await wholeInit();
let initiator;
- if (details.originUrl)
- initiator = new URL(details.originUrl);
- else if (details.initiator)
- initiator = new URL(details.initiator);
+ try {
+ if (details.originUrl) initiator = new URL(details.originUrl);
+ else if (details.initiator) initiator = new URL(details.initiator);
+ }
+ catch { return null; }
+
- let newUrl = await youtubeMusicHelper.redirect(url, details.type)
- if (!newUrl) newUrl = await youtubeHelper.redirect(url, details, initiator)
- if (!newUrl) newUrl = await twitterHelper.redirect(url, initiator);
- if (!newUrl) newUrl = await instagramHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await mapsHelper.redirect(url, initiator);
- if (!newUrl) newUrl = await redditHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await mediumHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await imgurHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await tiktokHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await sendTargetsHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await peertubeHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await lbryHelper.redirect(url, details.type, initiator);
- if (!newUrl) newUrl = await translateHelper.redirect(url);
- if (!newUrl) newUrl = await searchHelper.redirect(url)
- if (!newUrl) newUrl = await wikipediaHelper.redirect(url);
+ let newUrl = youtubeMusicHelper.redirect(url, details.type)
+ if (!newUrl) newUrl = youtubeHelper.redirect(url, details, initiator)
+ if (!newUrl) newUrl = twitterHelper.redirect(url, initiator);
+ if (!newUrl) newUrl = instagramHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = mapsHelper.redirect(url, initiator);
+ if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = peertubeHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = lbryHelper.redirect(url, details.type, initiator);
+ if (!newUrl) newUrl = translateHelper.redirect(url);
+ if (!newUrl) newUrl = searchHelper.redirect(url)
+ if (!newUrl) newUrl = wikipediaHelper.redirect(url);
if (
details.frameAncestors && details.frameAncestors.length > 0 &&
- await generalHelper.isException(new URL(details.frameAncestors[0].url))
+ generalHelper.isException(new URL(details.frameAncestors[0].url))
) newUrl = null;
- if (await generalHelper.isException(url)) newUrl = 'BYPASSTAB';
-
+ if (generalHelper.isException(url)) newUrl = 'BYPASSTAB';
if (BYPASSTABs.includes(details.tabId)) newUrl = null;
if (newUrl) {
@@ -115,15 +111,13 @@ browser.webRequest.onBeforeRequest.addListener(
console.log(`Canceled ${url}`);
return { cancel: true };
}
- else if (newUrl === 'BYPASSTAB') {
+ if (newUrl === 'BYPASSTAB') {
console.log(`Bypassed ${details.tabId} ${url}`);
if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId);
return null;
}
- else {
- console.info("Redirecting", url.href, "=>", newUrl);
- return { redirectUrl: newUrl };
- }
+ console.info("Redirecting", url.href, "=>", newUrl);
+ return { redirectUrl: newUrl };
}
return null;
},
@@ -133,7 +127,7 @@ browser.webRequest.onBeforeRequest.addListener(
browser.tabs.onRemoved.addListener(
tabId => {
- let i = BYPASSTABs.indexOf(tabId);
+ const i = BYPASSTABs.indexOf(tabId);
if (i > -1) {
BYPASSTABs.splice(i, 1);
console.log("Removed BYPASSTABs", tabId);
@@ -143,7 +137,6 @@ browser.tabs.onRemoved.addListener(
browser.webRequest.onHeadersReceived.addListener(
async e => {
- await wholeInit();
let response = twitterHelper.removeXFrameOptions(e)
if (!response) youtubeHelper.removeXFrameOptions(e)
return response;
@@ -153,20 +146,17 @@ browser.webRequest.onHeadersReceived.addListener(
);
async function redirectOfflineInstance(url, tabId) {
- await wholeInit();
- let newUrl;
-
- newUrl = youtubeHelper.switchInstance(url);
- if (!newUrl) newUrl = twitterHelper.switchInstance(url);
- if (!newUrl) newUrl = instagramHelper.switchInstance(url);
- if (!newUrl) newUrl = redditHelper.switchInstance(url);
- if (!newUrl) newUrl = searchHelper.switchInstance(url);
- if (!newUrl) newUrl = translateHelper.switchInstance(url);
- if (!newUrl) newUrl = mediumHelper.switchInstance(url);
- if (!newUrl) newUrl = imgurHelper.switchInstance(url);
- if (!newUrl) newUrl = wikipediaHelper.switchInstance(url);
- if (!newUrl) newUrl = peertubeHelper.switchInstance(url);
- if (!newUrl) newUrl = lbryHelper.switchInstance(url);
+ let newUrl = await youtubeHelper.switchInstance(url);
+ if (!newUrl) newUrl = await twitterHelper.switchInstance(url);
+ if (!newUrl) newUrl = await instagramHelper.switchInstance(url);
+ if (!newUrl) newUrl = await redditHelper.switchInstance(url);
+ if (!newUrl) newUrl = await searchHelper.switchInstance(url);
+ if (!newUrl) newUrl = await translateHelper.switchInstance(url);
+ if (!newUrl) newUrl = await mediumHelper.switchInstance(url);
+ if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
+ if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
+ if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
+ if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
if (newUrl) {
if (counter >= 5) {
@@ -194,13 +184,7 @@ function isAutoRedirect() {
browser.webRequest.onResponseStarted.addListener(
async details => {
if (!await isAutoRedirect()) return null;
-
- if (details.type == 'main_frame' && (details.statusCode == 502 || details.statusCode == 503 || details.statusCode == 504)) {
- // if (details.type == 'main_frame' && details.statusCode >= 200) {
- // console.log("statusCode", details.statusCode);
- const url = new URL(details.url);
- redirectOfflineInstance(url, details.tabId);
- }
+ if (details.type == 'main_frame' && details.statusCode >= 500) redirectOfflineInstance(new URL(details.url), details.tabId);
},
{ urls: ["<all_urls>"], }
)
@@ -208,10 +192,7 @@ browser.webRequest.onResponseStarted.addListener(
browser.webRequest.onErrorOccurred.addListener(
async details => {
if (!await isAutoRedirect()) return;
- if (details.type == 'main_frame') {
- const url = new URL(details.url);
- redirectOfflineInstance(url, details.tabId);
- }
+ if (details.type == 'main_frame') redirectOfflineInstance(new URL(details.url), details.tabId);
},
{ urls: ["<all_urls>"], }
)
@@ -232,7 +213,7 @@ browser.contextMenus.create({
browser.contextMenus.create({
id: "switchInstance",
- title: chrome.i18n.getMessage("switchInstance"),
+ title: browser.i18n.getMessage("switchInstance"),
contexts: ["browser_action"]
});
@@ -257,3 +238,7 @@ browser.contextMenus.onClicked.addListener(
else if (info.menuItemId == 'unify') utils.unify();
}
);
+
+browser.runtime.onMessage.addListener(message => {
+ if (message.function === 'unify') utils.unify();
+});
diff --git a/src/pages/background/incognito.js b/src/pages/background/incognito.js
index 600591d3..2ebbe545 100644
--- a/src/pages/background/incognito.js
+++ b/src/pages/background/incognito.js
@@ -9,7 +9,10 @@ import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js";
window.browser = window.browser || window.chrome;
await youtubeHelper.setInvidiousCookies();
+await youtubeHelper.initPipedLocalStorage();
+await youtubeHelper.initPipedMaterialLocalStorage();
await translateHelper.setSimplyTranslateCookies();
+await translateHelper.initLingvaLocalStorage();
await twitterHelper.setNitterCookies();
await wikipediaHelper.setWikilessCookies();
await searchHelper.setSearxCookies();
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 824f178b..84dbab04 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -94,7 +94,7 @@ utils.unify(true).then(r => {
if (!r) document.getElementById('unify_div').style.display = 'none';
else {
const unify = document.getElementById('unify');
- unify.addEventListener("click", () => utils.unify(false, unify));
+ unify.addEventListener("click", () => browser.runtime.sendMessage({ function: 'unify' }));
}
})
@@ -108,4 +108,14 @@ browser.storage.local.get(
document.getElementById(frontend).classList.add("hide")
else
document.getElementById(frontend).classList.remove("hide")
- }); \ No newline at end of file
+ }
+);
+
+for (const a of document.getElementsByTagName('a')) {
+ a.addEventListener('click', e => {
+ if (!a.classList.includes('button')) {
+ browser.tabs.create({ url: a.getAttribute('href') });
+ e.preventDefault();
+ }
+ })
+} \ No newline at end of file