about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/common.js2
-rw-r--r--src/assets/javascripts/helpers/reddit.js87
-rw-r--r--src/assets/javascripts/helpers/search.js78
-rw-r--r--src/assets/javascripts/helpers/translate/lingva-preferences.js18
-rw-r--r--src/assets/javascripts/helpers/translate/translate.js (renamed from src/assets/javascripts/helpers/translate.js)59
-rw-r--r--src/assets/javascripts/helpers/twitter.js6
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js44
-rw-r--r--src/assets/javascripts/helpers/youtube/invidious-preferences.js27
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js2
-rw-r--r--src/manifest.json2
-rw-r--r--src/pages/background/background.js8
-rw-r--r--src/pages/options/translate/translate.js2
-rw-r--r--src/pages/popup/popup.js2
13 files changed, 249 insertions, 88 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index f51bab36..961f5bd6 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -5,7 +5,7 @@ import instagramHelper from "./instagram.js";
 import mediumHelper from "./medium.js";
 import redditHelper from "./reddit.js";
 import searchHelper from "./search.js";
-import translateHelper from "./translate.js";
+import translateHelper from "./translate/translate.js";
 import wikipediaHelper from "./wikipedia.js";
 
 function getRandomInstance(instances) {
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 926d79e2..eff5c0e6 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -187,8 +187,49 @@ function setBypassWatchOnReddit(val) {
   console.log("bypassWatchOnReddit: ", bypassWatchOnReddit)
 }
 
-let alwaysUsePreferred;
+let theme;
+let applyThemeToSites;
+function initLibredditCookies() {
+  if (applyThemeToSites && theme != 'DEFAULT') {
+    let allInstances = [...redirects.libreddit.normal, ...redirects.libreddit.tor, ...libredditNormalCustomRedirects, ...libredditTorCustomRedirects]
+    let checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects, ...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+    for (const instanceUrl of allInstances)
+      if (!checkedInstances.includes(instanceUrl))
+        browser.cookies.remove({
+          url: instanceUrl,
+          name: "theme",
+        })
+    for (const instanceUrl of checkedInstances)
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "theme",
+        value: theme
+      })
+  }
+}
+function initTedditCookies() {
+  let themeValue;
+  if (theme == 'light') themeValue = 'white';
+  if (theme == 'dark') themeValue = 'dark';
+  if (applyThemeToSites && themeValue) {
+    let allInstances = [...redirects.teddit.normal, ...redirects.teddit.tor, ...tedditNormalCustomRedirects, ...tedditTorCustomRedirects]
+    let checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects, ...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+    for (const instanceUrl of allInstances)
+      if (!checkedInstances.includes(instanceUrl))
+        browser.cookies.remove({
+          url: instanceUrl,
+          name: "theme",
+        })
+    for (const instanceUrl of checkedInstances)
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "theme",
+        value: themeValue
+      })
+  }
+}
 
+let alwaysUsePreferred;
 
 // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
 // https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
@@ -201,6 +242,7 @@ let alwaysUsePreferred;
 // https://v.redd.it/z08avb339n801/DASH_1_2_M
 // https://i.redd.it/bfkhs659tzk81.jpg
 
+
 function redirect(url, type, initiator) {
   if (disableReddit) return null;
 
@@ -381,35 +423,44 @@ async function init() {
           "tedditTorRedirectsChecks",
           "tedditTorCustomRedirects",
 
+          "theme",
+          "applyThemeToSites",
+
           "redditProtocol",
           "bypassWatchOnReddit",
 
           "alwaysUsePreferred",
-        ], (result) => {
-          disableReddit = result.disableReddit ?? false;
-          protocol = result.redditProtocol ?? 'normal';
-          frontend = result.redditFrontend ?? 'libreddit';
+        ], r => {
+          disableReddit = r.disableReddit ?? false;
+          protocol = r.redditProtocol ?? 'normal';
+          frontend = r.redditFrontend ?? 'libreddit';
 
-          bypassWatchOnReddit = result.bypassWatchOnReddit ?? true;
+          bypassWatchOnReddit = r.bypassWatchOnReddit ?? true;
 
-          alwaysUsePreferred = result.alwaysUsePreferred ?? false;
+          alwaysUsePreferred = r.alwaysUsePreferred ?? false;
 
           redirects.teddit = dataJson.teddit;
-          if (result.redditRedirects) redirects = result.redditRedirects;
+          if (r.redditRedirects) redirects = r.redditRedirects;
+
+          if (r.redditRedirects) redirects = r.redditRedirects;
 
-          if (result.redditRedirects) redirects = result.redditRedirects;
+          theme = r.theme ?? 'DEFAULT';
+          applyThemeToSites = r.applyThemeToSites ?? false;
 
-          libredditNormalRedirectsChecks = result.libredditNormalRedirectsChecks ?? [...redirects.libreddit.normal];
-          libredditNormalCustomRedirects = result.libredditNormalCustomRedirects ?? [];
+          libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks ?? [...redirects.libreddit.normal];
+          libredditNormalCustomRedirects = r.libredditNormalCustomRedirects ?? [];
 
-          libredditTorRedirectsChecks = result.libredditTorRedirectsChecks ?? [...redirects.libreddit.tor];
-          libredditTorCustomRedirects = result.libredditTorCustomRedirects ?? [];
+          libredditTorRedirectsChecks = r.libredditTorRedirectsChecks ?? [...redirects.libreddit.tor];
+          libredditTorCustomRedirects = r.libredditTorCustomRedirects ?? [];
 
-          tedditNormalRedirectsChecks = result.tedditNormalRedirectsChecks ?? [...redirects.teddit.normal];
-          tedditNormalCustomRedirects = result.tedditNormalCustomRedirects ?? [];
+          tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks ?? [...redirects.teddit.normal];
+          tedditNormalCustomRedirects = r.tedditNormalCustomRedirects ?? [];
 
-          tedditTorRedirectsChecks = result.tedditTorRedirectsChecks ?? [...redirects.teddit.tor];
-          tedditTorCustomRedirects = result.tedditTorCustomRedirects ?? [];
+          tedditTorRedirectsChecks = r.tedditTorRedirectsChecks ?? [...redirects.teddit.tor];
+          tedditTorCustomRedirects = r.tedditTorCustomRedirects ?? [];
+
+          initLibredditCookies();
+          initTedditCookies();
 
           resolve();
         }
@@ -457,6 +508,8 @@ export default {
   getTedditTorCustomRedirects,
   setTedditTorCustomRedirects,
 
+  initLibredditCookies,
+
   redirect,
   init,
   changeInstance,
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index b90c201c..998589a6 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-  /^https?:\/\/(www\.|search\.|)google\.com(\...|)(\/search\?q=..*|\/$)/,
+  /^https?:\/\/(www\.|search\.|)google\.com(\...|)/,
   /^https?:\/\/libredirect\.onion/
   // /^https?:\/\/yandex\.com(\...|)(\/search\/..*|\/$)/,
 ];
@@ -158,6 +158,41 @@ function setProtocol(val) {
   console.log("searchProtocol: ", val)
 }
 
+let theme;
+let applyThemeToSites;
+function initSearxCookies() {
+  let themeValue;
+  if (theme == 'light') themeValue = 'logicodev';
+  if (theme == 'dark') themeValue = 'logicodev-dark';
+  if (applyThemeToSites && themeValue) {
+    let allInstances = [...redirects.searx.normal, ...redirects.searx.tor, ...searxNormalCustomRedirects, ...searxTorCustomRedirects]
+    let checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects, ...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+    for (const instanceUrl of allInstances)
+      if (!checkedInstances.includes(instanceUrl)) {
+        browser.cookies.remove({
+          url: instanceUrl,
+          name: "oscar-style",
+        })
+        browser.cookies.remove({
+          url: instanceUrl,
+          name: "oscar",
+        })
+      }
+    for (const instanceUrl of checkedInstances) {
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "oscar-style",
+        value: themeValue
+      })
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "theme",
+        value: 'oscar'
+      })
+    }
+  }
+}
+
 function redirect(url) {
   if (disable) return;
   if (!targets.some((rx) => rx.test(url.href))) return;
@@ -184,13 +219,12 @@ function redirect(url) {
     randomInstance = redirects.startpage.normal;
     path = "/do/search";
   }
+  if (url.pathname == '/') path = '/';
 
   let searchQuery = "";
-  url.search.slice(1).split("&").forEach((input) => {
-    if (input.startsWith("q=")) searchQuery = input;
-  });
+  if (url.searchParams.has('q')) searchQuery = `?q=${url.searchParams.get('q')}`;
 
-  return `${randomInstance}${path}?${searchQuery}`;
+  return `${randomInstance}${path}${searchQuery}`;
 }
 
 function changeInstance(url) {
@@ -254,30 +288,38 @@ async function init() {
           "searxTorRedirectsChecks",
           "searxTorCustomRedirects",
 
+          "theme",
+          "applyThemeToSites",
+
           "searchProtocol",
         ],
-        (result) => {
-          disable = result.disableSearch ?? false;
+        r => {
+          disable = r.disableSearch ?? false;
 
-          protocol = result.searchProtocol ?? 'normal';
+          protocol = r.searchProtocol ?? 'normal';
 
-          frontend = result.searchFrontend ?? 'searx';
+          frontend = r.searchFrontend ?? 'searx';
+
+          theme = r.theme ?? 'DEFAULT';
+          applyThemeToSites = r.applyThemeToSites ?? false;
 
           redirects.searx = dataJson.searx;
           redirects.whoogle = dataJson.whoogle;
-          if (result.searchRedirects) redirects = result.searchRedirects;
+          if (r.searchRedirects) redirects = r.searchRedirects;
+
+          whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks ?? [...redirects.whoogle.normal];
+          whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects ?? [];
 
-          whoogleNormalRedirectsChecks = result.whoogleNormalRedirectsChecks ?? [...redirects.whoogle.normal];
-          whoogleNormalCustomRedirects = result.whoogleNormalCustomRedirects ?? [];
+          whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks ?? [...redirects.whoogle.tor];
+          whoogleTorCustomRedirects = r.whoogleTorCustomRedirects ?? [];
 
-          whoogleTorRedirectsChecks = result.whoogleTorRedirectsChecks ?? [...redirects.whoogle.tor];
-          whoogleTorCustomRedirects = result.whoogleTorCustomRedirects ?? [];
+          searxNormalRedirectsChecks = r.searxNormalRedirectsChecks ?? [...redirects.searx.normal];
+          searxNormalCustomRedirects = r.searxNormalCustomRedirects ?? [];
 
-          searxNormalRedirectsChecks = result.searxNormalRedirectsChecks ?? [...redirects.searx.normal];
-          searxNormalCustomRedirects = result.searxNormalCustomRedirects ?? [];
+          searxTorRedirectsChecks = r.searxTorRedirectsChecks ?? [...redirects.searx.tor];
+          searxTorCustomRedirects = r.searxTorCustomRedirects ?? [];
 
-          searxTorRedirectsChecks = result.searxTorRedirectsChecks ?? [...redirects.searx.tor];
-          searxTorCustomRedirects = result.searxTorCustomRedirects ?? [];
+          initSearxCookies()
 
           resolve();
         }
diff --git a/src/assets/javascripts/helpers/translate/lingva-preferences.js b/src/assets/javascripts/helpers/translate/lingva-preferences.js
new file mode 100644
index 00000000..1cf08f65
--- /dev/null
+++ b/src/assets/javascripts/helpers/translate/lingva-preferences.js
@@ -0,0 +1,18 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    [
+        "theme",
+        "applyThemeToSites",
+    ],
+    r => {
+        let applyThemeToSites = r.applyThemeToSites ?? false;
+        let theme = r.theme ?? "DEFAULT";
+
+        if (applyThemeToSites && theme != "DEFAULT") localStorage.setItem("chakra-ui-color-mode", r.theme);
+    }
+)
+
+window.onunload = () => {
+    localStorage.removeItem("chakra-ui-color-mode");
+};
diff --git a/src/assets/javascripts/helpers/translate.js b/src/assets/javascripts/helpers/translate/translate.js
index de70657f..f47ee82b 100644
--- a/src/assets/javascripts/helpers/translate.js
+++ b/src/assets/javascripts/helpers/translate/translate.js
@@ -1,6 +1,6 @@
 window.browser = window.browser || window.chrome;
 
-import commonHelper from './common.js'
+import commonHelper from '../common.js'
 
 const targets = [
   "translate.google.com",
@@ -184,12 +184,56 @@ function setSimplyTranslateEngine(val) {
   console.log("simplyTranslateEngine: ", val)
 }
 
-function isTranslate(url, initiator) {
-  if (disable) return false;
-  return targets.includes(url.host)
+
+function isTranslateRedirects(url, type, frontend) {
+  let protocolHost = `${url.protocol}//${url.host}`;
+
+  if (type !== "main_frame") return false;
+
+  if (frontend == 'simplyTranslate')
+    return [
+      ...redirects.simplyTranslate.normal,
+      ...redirects.simplyTranslate.tor,
+      ...simplyTranslateNormalCustomRedirects,
+      ...simplyTranslateTorCustomRedirects,
+    ].includes(protocolHost);
+
+  if (frontend == 'lingva')
+    return [
+      ...redirects.lingva.normal,
+      ...redirects.lingva.tor,
+      ...lingvaNormalCustomRedirects,
+      ...lingvaTorCustomRedirects,
+    ].includes(protocolHost);
+
+  return [
+    ...redirects.simplyTranslate.normal,
+    ...redirects.simplyTranslate.tor,
+    ...simplyTranslateNormalCustomRedirects,
+    ...simplyTranslateTorCustomRedirects,
+
+    ...redirects.lingva.normal,
+    ...redirects.lingva.tor,
+    ...lingvaNormalCustomRedirects,
+    ...lingvaTorCustomRedirects,
+  ].includes(protocolHost);
+}
+
+function initLingvaLocalStorage(tabId) {
+  browser.tabs.executeScript(
+    tabId,
+    {
+      file: "/assets/javascripts/helpers/translate/lingva-preferences.js",
+      runAt: "document_start"
+    }
+  );
 }
 
 function redirect(url) {
+
+  if (disable) return;
+  if (!targets.includes(url.host)) return
+
   let params_arr = url.search.split('&');
   params_arr[0] = params_arr[0].substring(1);
   let myMap = {};
@@ -212,8 +256,6 @@ function redirect(url) {
       if (simplyTranslateEngine != "DEFAULT") url.searchParams.append("engine", simplyTranslateEngine);
       return `${randomInstance}/${url.search}`
     }
-
-
   }
   else if (frontend == 'lingva') {
     let instancesList;
@@ -330,8 +372,6 @@ export default {
   setSimplyTranslateRedirects,
   setLingvaRedirects,
 
-  isTranslate,
-
   getDisable,
   setDisable,
 
@@ -369,6 +409,9 @@ export default {
   getLingvaTorCustomRedirects,
   setLingvaTorCustomRedirects,
 
+  isTranslateRedirects,
+  initLingvaLocalStorage,
+
   redirect,
   init,
   changeInstance,
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index ba301ad4..64868bbf 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -203,11 +203,11 @@ function initNitterCookies() {
   let themeValue;
   if (theme == 'light') themeValue = 'Twitter';
   if (theme == 'dark') themeValue = 'Twitter Dark';
-  if (applyThemeToSites && themeValue != 'DEFAULT') {
+  if (applyThemeToSites && themeValue) {
     let allInstances = [...redirects.nitter.normal, ...redirects.nitter.tor, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects]
     let checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
-    for (const item of allInstances)
-      if (!checkedInstances.includes(item))
+    for (const instanceUrl of allInstances)
+      if (!checkedInstances.includes(instanceUrl))
         browser.cookies.remove({
           url: instanceUrl,
           name: "theme",
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index 12171625..fbe65748 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -95,12 +95,36 @@ function setWikilessTorCustomRedirects(val) {
   console.log("wikilessTorCustomRedirects: ", val)
 }
 
-function isWikipedia(url, initiator) {
-  if (disable) return false;
-  return targets.test(url.href);
+let theme;
+let applyThemeToSites;
+function initWikilessCookies() {
+  console.log("applyThemeToSites", applyThemeToSites)
+  let themeValue;
+  if (theme == 'light') themeValue = 'white';
+  if (theme == 'dark') themeValue = 'dark';
+  console.log("themeValue", themeValue)
+  if (applyThemeToSites && themeValue) {
+    let allInstances = [...redirects.wikiless.normal, ...redirects.wikiless.tor, ...wikilessNormalCustomRedirects, ...wikilessTorCustomRedirects]
+    let checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects, ...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+    for (const instanceUrl of allInstances)
+      if (!checkedInstances.includes(instanceUrl))
+        browser.cookies.remove({
+          url: instanceUrl,
+          name: "theme",
+        })
+    for (const instanceUrl of checkedInstances)
+      browser.cookies.set({
+        url: instanceUrl,
+        name: "theme",
+        value: themeValue
+      })
+  }
 }
 
 function redirect(url) {
+  if (disable) return;
+  if (!targets.test(url.href)) return;
+
   let GETArguments = [];
   if (url.search.length > 0) {
     let search = url.search.substring(1); //get rid of '?'
@@ -172,7 +196,11 @@ async function init() {
           "wikilessTorRedirectsChecks",
           "wikilessNormalCustomRedirects",
           "wikilessTorCustomRedirects",
-          "wikipediaProtocol"
+          "wikipediaProtocol",
+
+          "theme",
+          "applyThemeToSites",
+
         ], r => { // r = result
           disable = r.disableWikipedia ?? false;
 
@@ -187,6 +215,11 @@ async function init() {
           wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks ?? [...redirects.wikiless.tor];
           wikilessTorCustomRedirects = r.wikilessTorCustomRedirects ?? [];
 
+          theme = r.theme ?? 'DEFAULT';
+          applyThemeToSites = r.applyThemeToSites ?? false;
+
+          initWikilessCookies();
+
           resolve();
         }
       );
@@ -215,8 +248,9 @@ export default {
   getWikilessTorCustomRedirects,
   setWikilessTorCustomRedirects,
 
+  initWikilessCookies,
+
   redirect,
-  isWikipedia,
   init,
   changeInstance,
 };
diff --git a/src/assets/javascripts/helpers/youtube/invidious-preferences.js b/src/assets/javascripts/helpers/youtube/invidious-preferences.js
deleted file mode 100644
index b25900b8..00000000
--- a/src/assets/javascripts/helpers/youtube/invidious-preferences.js
+++ /dev/null
@@ -1,27 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-function getCookie() {
-    for (const c of document.cookie.split(";")) {
-        while (c.charAt(0) == " ") c = c.substring(1, c.length);
-        if (c.indexOf("PREFS=") == 0)
-            return JSON.parse(
-                decodeURIComponent(c.substring("PREFS=".length, c.length))
-            );
-    }
-    return {};
-}
-
-browser.storage.local.get(
-    [
-        "invidiousAlwaysProxy",
-        "invidiousSubtitles",
-        "invidiousPlayerStyle",
-        "youtubeVolume",
-        "youtubeAutoplay",
-        "OnlyEmbeddedVideo",
-        "theme",
-        "invidiousVideoQuality",
-    ],
-    r => {
-    }
-)
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 0ab77df6..760cb675 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -559,8 +559,6 @@ function initPipedMaterialLocalStorage(tabId) {
 
 let applyThemeToSites;
 function initInvidiousCookies() {
-  console.log("initInvidiousCookies");
-
   let prefs = {};
   if (invidiousAlwaysProxy != "DEFAULT") prefs.local = invidiousAlwaysProxy == 'true';
   if (invidiousVideoQuality != "DEFAULT") prefs.quality = invidiousVideoQuality;
diff --git a/src/manifest.json b/src/manifest.json
index 1e7c49f5..b6392b49 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -38,7 +38,7 @@
   },
   "web_accessible_resources": [
     "assets/javascripts/helpers/youtube/piped-preferences.js",
-    "assets/javascripts/helpers/youtube/pipedMaterial-preferences.js"
+    "/assets/javascripts/helpers/translate/lingva-preferences.js"
   ],
   "chrome_settings_overrides": {
     "homepage": "https://libredirect.onion",
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index d019fa28..1822f2b9 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -5,7 +5,7 @@ import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
 import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
 import redditHelper from "../../assets/javascripts/helpers/reddit.js";
 import searchHelper from "../../assets/javascripts/helpers/search.js";
-import translateHelper from "../../assets/javascripts/helpers/translate.js";
+import translateHelper from "../../assets/javascripts/helpers/translate/translate.js";
 import mapsHelper from "../../assets/javascripts/helpers/maps.js";
 import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
 import mediumHelper from "../../assets/javascripts/helpers/medium.js";
@@ -74,11 +74,11 @@ browser.webRequest.onBeforeRequest.addListener(
 
     if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator);
 
-    if (translateHelper.isTranslate(url, initiator)) newUrl = translateHelper.redirect(url);
+    if (!newUrl) newUrl = translateHelper.redirect(url);
 
     if (!newUrl) newUrl = searchHelper.redirect(url)
 
-    if (wikipediaHelper.isWikipedia(url, initiator)) newUrl = wikipediaHelper.redirect(url);
+    if (!newUrl) newUrl = wikipediaHelper.redirect(url);
 
     if (generalHelper.isException(url, initiator)) newUrl = null;
 
@@ -115,7 +115,6 @@ browser.tabs.onRemoved.addListener((tabId) => {
 
 browser.webRequest.onResponseStarted.addListener(
   details => {
-    console.log("onResponseStarted");
     let autoRedirect = generalHelper.getAutoRedirect();
 
     if (!autoRedirect) return null;
@@ -158,6 +157,7 @@ browser.tabs.onUpdated.addListener(
     try { url = new URL(changeInfo.url); }
     catch (_) { return }
     if (youtubeHelper.isPipedorInvidious(url, 'main_frame', 'piped')) youtubeHelper.initPipedLocalStorage(tabId);
+    if (translateHelper.isTranslateRedirects(url, 'main_frame', 'lingva')) translateHelper.initLingvaLocalStorage(tabId);
     if (instagramHelper.isBibliogram(url)) instagramHelper.initBibliogramCookies(url);
     // if (changeInfo.url && youtubeHelper.isPipedorInvidious(url, 'main_frame', 'pipedMaterial')) youtubeHelper.initPipedMaterialLocalStorage(tabId);
   });
\ No newline at end of file
diff --git a/src/pages/options/translate/translate.js b/src/pages/options/translate/translate.js
index 215fc71b..d1df35ab 100644
--- a/src/pages/options/translate/translate.js
+++ b/src/pages/options/translate/translate.js
@@ -1,4 +1,4 @@
-import translateHelper from "../../../assets/javascripts/helpers/translate.js";
+import translateHelper from "../../../assets/javascripts/helpers/translate/translate.js";
 import commonHelper from "../../../assets/javascripts/helpers/common.js";
 
 let disableElement = document.getElementById("disable-simplyTranslate");
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index d03809ec..3b4f4161 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -9,7 +9,7 @@ import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
 import mapsHelper from "../../assets/javascripts/helpers/maps.js";
 import redditHelper from "../../assets/javascripts/helpers/reddit.js";
 import searchHelper from "../../assets/javascripts/helpers/search.js";
-import translateHelper from "../../assets/javascripts/helpers/translate.js";
+import translateHelper from "../../assets/javascripts/helpers/translate/translate.js";
 import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
 import mediumHelper from "../../assets/javascripts/helpers/medium.js";
 import imgurHelper from "../../assets/javascripts/helpers/imgur.js";