about summary refs log tree commit diff stats
path: root/src/assets
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/helpers/common.js2
-rw-r--r--src/assets/javascripts/helpers/instagram.js89
-rw-r--r--src/assets/javascripts/helpers/reddit.js88
-rw-r--r--src/assets/javascripts/helpers/search.js88
-rw-r--r--src/assets/javascripts/helpers/tiktok.js24
-rw-r--r--src/assets/javascripts/helpers/translate/get_lingva_preferences.js10
-rw-r--r--src/assets/javascripts/helpers/translate/lingva-preferences.js12
-rw-r--r--src/assets/javascripts/helpers/translate/set_lingva_preferences.js16
-rw-r--r--src/assets/javascripts/helpers/translate/translate.js133
-rw-r--r--src/assets/javascripts/helpers/twitter.js50
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js30
-rw-r--r--src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js7
-rw-r--r--src/assets/javascripts/helpers/youtube/get_piped_preferences.js (renamed from src/assets/javascripts/helpers/youtube/get_piped_settings.js)0
-rw-r--r--src/assets/javascripts/helpers/youtube/piped-preferences.js40
-rw-r--r--src/assets/javascripts/helpers/youtube/piped.js89
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js37
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial.js31
-rw-r--r--src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js8
-rw-r--r--src/assets/javascripts/helpers/youtube/set_piped_preferences.js40
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js163
20 files changed, 626 insertions, 331 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 5adee5c8..5982fa03 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -331,7 +331,7 @@ function getCookiesFromStorage(frontend, to, name) {
   browser.storage.local.get(
     key,
     r => {
-      if (r) browser.cookies.set({ url: to, name: name, value: r[key] })
+      if (r[key] !== undefined) browser.cookies.set({ url: to, name: name, value: r[key] })
     }
   )
 }
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index effbe46c..3d4af089 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -29,24 +29,6 @@ let bibliogramTorRedirectsChecks;
 let bibliogramNormalCustomRedirects = [];
 let bibliogramTorCustomRedirects = [];
 
-const reservedPaths = [
-  "u",
-  "p",
-  "privacy",
-];
-
-const bypassPaths = [
-  /about/,
-  /explore/,
-  /support/,
-  /press/,
-  /api/,
-  /privacy/,
-  /safety/,
-  /admin/,
-  /\/(accounts\/|embeds?.js)/
-];
-
 let disable; //disableInstagram
 let protocol; //instagramProtocol
 
@@ -68,6 +50,18 @@ function redirect(url, type, initiator) {
     "media",
   ].includes(type)) return null;
 
+  const bypassPaths = [
+    /about/,
+    /explore/,
+    /support/,
+    /press/,
+    /api/,
+    /privacy/,
+    /safety/,
+    /admin/,
+    /\/(accounts\/|embeds?.js)/
+  ];
+
   if (bypassPaths.some(rx => rx.test(url.pathname))) return;
 
   let instancesList;
@@ -76,6 +70,12 @@ function redirect(url, type, initiator) {
   if (instancesList.length === 0) return null;
   let randomInstance = commonHelper.getRandomInstance(instancesList)
 
+  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"))
@@ -139,44 +139,6 @@ function switchInstance(url) {
   return `${randomInstance}${url.pathname}${url.search}`;
 }
 
-function isBibliogram(url) {
-  let protocolHost = commonHelper.protocolHost(url);
-  return [
-    ...redirects.bibliogram.normal,
-    ...redirects.bibliogram.tor,
-    ...bibliogramNormalCustomRedirects,
-    ...bibliogramTorCustomRedirects,
-  ].includes(protocolHost);
-}
-
-let instancesCookies;
-let theme;
-function initBibliogramCookies(url) {
-  let protocolHost = commonHelper.protocolHost(url);
-  browser.cookies.get(
-    { url: protocolHost, name: "settings" },
-    cookie => {
-      if (!cookie || !instancesCookies.includes(protocolHost)) {
-        console.log(`initing cookie for ${protocolHost}`);
-        let request = new XMLHttpRequest();
-        request.open("POST", `${protocolHost}/settings/return?referrer=%2F`);
-
-        let themeValue;
-        if (theme == 'light') themeValue = "classic";
-        if (theme == 'dark') themeValue = "pussthecat.org-v2"
-
-        if (themeValue) {
-          let data = `csrf=x&theme=${themeValue}`;
-          request.send(data);
-          if (!instancesCookies.includes(protocolHost)) instancesCookies.push(protocolHost);
-          browser.storage.local.set({ instancesCookies })
-        }
-      }
-    })
-
-}
-
-
 function initDefaults() {
   return new Promise(resolve => {
     fetch('/instances/data.json').then(response => response.text()).then(data => {
@@ -192,10 +154,6 @@ function initDefaults() {
           disableInstagram: false,
           instagramRedirects: redirects,
 
-          theme: 'DEFAULT',
-
-          instancesCookies: [],
-
           bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
           bibliogramTorRedirectsChecks: [],
 
@@ -217,10 +175,6 @@ async function init() {
         "disableInstagram",
         "instagramRedirects",
 
-        "theme",
-
-        "instancesCookies",
-
         "bibliogramNormalRedirectsChecks",
         "bibliogramTorRedirectsChecks",
 
@@ -232,10 +186,6 @@ async function init() {
         disable = r.disableInstagram;
         if (r.instagramRedirects) redirects = r.instagramRedirects
 
-        theme = r.theme;
-
-        instancesCookies = r.instancesCookies;
-
         bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
         bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
 
@@ -256,9 +206,6 @@ export default {
 
   reverse,
 
-  isBibliogram,
-  initBibliogramCookies,
-
   redirect,
   init,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index bbcaf872..def751a1 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -114,6 +114,38 @@ function initLibredditCookies(from) {
 
 }
 
+function setLibredditCookies() {
+  browser.storage.local.get(
+    [
+      "redditProtocol",
+      "disableReddit",
+      "redditFrontend",
+      "libredditNormalRedirectsChecks",
+      "libredditNormalCustomRedirects",
+      "libredditTorRedirectsChecks",
+      "libredditTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('libreddit', to, "theme");
+        commonHelper.getCookiesFromStorage('libreddit', to, "front_page");
+        commonHelper.getCookiesFromStorage('libreddit', to, "layout");
+        commonHelper.getCookiesFromStorage('libreddit', to, "wide");
+        commonHelper.getCookiesFromStorage('libreddit', to, "post_sort");
+        commonHelper.getCookiesFromStorage('libreddit', to, "comment_sort");
+        commonHelper.getCookiesFromStorage('libreddit', to, "show_nsfw");
+        commonHelper.getCookiesFromStorage('libreddit', to, "autoplay_videos");
+        commonHelper.getCookiesFromStorage('libreddit', to, "use_hls");
+        commonHelper.getCookiesFromStorage('libreddit', to, "hide_hls_notification");
+      }
+    }
+  )
+}
+
 function initTedditCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
@@ -156,6 +188,40 @@ function initTedditCookies(from) {
   })
 }
 
+function setTedditCookies() {
+  browser.storage.local.get(
+    [
+      "redditProtocol",
+      "disableReddit",
+      "redditFrontend",
+      "tedditNormalRedirectsChecks",
+      "tedditNormalCustomRedirects",
+      "tedditTorRedirectsChecks",
+      "tedditTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('teddit', to, 'collapse_child_comments')
+        commonHelper.getCookiesFromStorage('teddit', to, 'domain_instagram')
+        commonHelper.getCookiesFromStorage('teddit', to, 'domain_twitter')
+        commonHelper.getCookiesFromStorage('teddit', to, 'domain_youtube')
+        commonHelper.getCookiesFromStorage('teddit', to, 'flairs')
+        commonHelper.getCookiesFromStorage('teddit', to, 'highlight_controversial')
+        commonHelper.getCookiesFromStorage('teddit', to, 'nsfw_enabled')
+        commonHelper.getCookiesFromStorage('teddit', to, 'post_media_max_height')
+        commonHelper.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage')
+        commonHelper.getCookiesFromStorage('teddit', to, 'show_upvotes')
+        commonHelper.getCookiesFromStorage('teddit', to, 'theme')
+        commonHelper.getCookiesFromStorage('teddit', to, 'videos_muted')
+      }
+    }
+  )
+}
+
 function redirect(url, type, initiator) {
   // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
   // https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
@@ -200,12 +266,12 @@ function redirect(url, type, initiator) {
     if (frontend == 'teddit') {
       if (tedditInstancesList.length === 0) return null;
       let tedditRandomInstance = commonHelper.getRandomInstance(tedditInstancesList);
-      return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`;
+      return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.reddit}`;
     }
     if (frontend == 'libreddit') {
       if (libredditInstancesList.length === 0) return null;
       let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
-      return `${libredditRandomInstance}/img${url.pathname}${url.search}`;
+      return `${libredditRandomInstance}/img${url.pathname}${url.reddit}`;
     }
   }
   else if (url.host === "redd.it") {
@@ -213,13 +279,13 @@ function redirect(url, type, initiator) {
       if (libredditInstancesList.length === 0) return null;
       let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
       // https://redd.it/foo => https://libredd.it/comments/foo
-      return `${libredditRandomInstance}/comments${url.pathname}${url.search}`;
+      return `${libredditRandomInstance}/comments${url.pathname}${url.reddit}`;
     }
     if (frontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
       if (tedditInstancesList.length === 0) return null;
       let tedditRandomInstance = commonHelper.getRandomInstance(tedditInstancesList);
       // https://redd.it/foo => https://teddit.net/comments/foo
-      return `${tedditRandomInstance}/comments${url.pathname}${url.search}`;
+      return `${tedditRandomInstance}/comments${url.pathname}${url.reddit}`;
     }
   }
   else if (url.host === 'preview.redd.it') {
@@ -229,19 +295,19 @@ function redirect(url, type, initiator) {
     if (frontend == 'libreddit') {
       if (libredditInstancesList.length === 0) return null;
       let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
-      return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`;
+      return `${libredditRandomInstance}/preview/pre${url.pathname}${url.reddit}`;
     }
   }
 
   if (frontend == 'libreddit') {
     if (libredditInstancesList.length === 0) return null;
     let libredditRandomInstance = commonHelper.getRandomInstance(libredditInstancesList);
-    return `${libredditRandomInstance}${url.pathname}${url.search}`;
+    return `${libredditRandomInstance}${url.pathname}${url.reddit}`;
   }
   if (frontend == 'teddit') {
     if (tedditInstancesList.length === 0) return null;
     let tedditRandomInstance = commonHelper.getRandomInstance(tedditInstancesList);
-    return `${tedditRandomInstance}${url.pathname}${url.search}`;
+    return `${tedditRandomInstance}${url.pathname}${url.reddit}`;
   }
 }
 
@@ -254,7 +320,7 @@ function reverse(url) {
     ...nitterTorCustomRedirects].includes(protocolHost)
   ) return;
   if (url.pathname.includes('/pics/w:null_'))
-    return `https://reddit.com${url.pathname}${url.search}`;
+    return `https://reddit.com${url.pathname}${url.reddit}`;
 }
 
 async function switchInstance(url) {
@@ -319,7 +385,7 @@ async function switchInstance(url) {
 
         let randomInstance = commonHelper.getRandomInstance(instancesList);
 
-        resolve(`${randomInstance}${url.pathname}${url.search}`)
+        resolve(`${randomInstance}${url.pathname}${url.reddit}`)
       }
     )
   })
@@ -412,9 +478,9 @@ export default {
   setLibredditRedirects,
 
   initLibredditCookies,
+  setLibredditCookies,
   initTedditCookies,
-
-  initLibredditCookies,
+  setTedditCookies,
 
   redirect,
   init,
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 730f3938..4e8441c6 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -147,7 +147,8 @@ function initSearxCookies(from) {
           ...r.searxTorCustomRedirects,
           ...r.searxI2pRedirectsChecks,
           ...r.searxI2pCustomRedirects,
-        ].includes(protocolHost)) resolve();
+        ].includes(protocolHost)) return;
+
 
         let checkedInstances;
         if (protocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects];
@@ -178,6 +179,45 @@ function initSearxCookies(from) {
   })
 }
 
+function setSearxCookies() {
+  browser.storage.local.get(
+    [
+      "disableSearch",
+      "searchProtocol",
+      "searchFrontend",
+      "searxNormalRedirectsChecks",
+      "searxNormalCustomRedirects",
+      "searxTorRedirectsChecks",
+      "searxTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableSearch || r.searchFrontend != 'searx', r.searchProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('searx', to, 'advanced_search');
+        commonHelper.getCookiesFromStorage('searx', to, 'autocomplete');
+        commonHelper.getCookiesFromStorage('searx', to, 'categories');
+        commonHelper.getCookiesFromStorage('searx', to, 'disabled_engines');
+        commonHelper.getCookiesFromStorage('searx', to, 'disabled_plugins');
+        commonHelper.getCookiesFromStorage('searx', to, 'doi_resolver');
+        commonHelper.getCookiesFromStorage('searx', to, 'enabled_engines');
+        commonHelper.getCookiesFromStorage('searx', to, 'enabled_plugins');
+        commonHelper.getCookiesFromStorage('searx', to, 'image_proxy');
+        commonHelper.getCookiesFromStorage('searx', to, 'language');
+        commonHelper.getCookiesFromStorage('searx', to, 'locale');
+        commonHelper.getCookiesFromStorage('searx', to, 'method');
+        commonHelper.getCookiesFromStorage('searx', to, 'oscar-style');
+        commonHelper.getCookiesFromStorage('searx', to, 'results_on_new_tab');
+        commonHelper.getCookiesFromStorage('searx', to, 'safesearch');
+        commonHelper.getCookiesFromStorage('searx', to, 'theme');
+        commonHelper.getCookiesFromStorage('searx', to, 'tokens');
+      }
+    }
+  )
+}
+
 function initSearxngCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
@@ -199,7 +239,7 @@ function initSearxngCookies(from) {
           ...r.searxngTorCustomRedirects,
           ...r.searxngI2pRedirectsChecks,
           ...r.searxngI2pCustomRedirects,
-        ].includes(protocolHost)) resolve();
+        ].includes(protocolHost)) return;
 
         let checkedInstances;
         if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects];
@@ -232,6 +272,47 @@ function initSearxngCookies(from) {
   })
 }
 
+function setSearxngCookies() {
+  browser.storage.local.get(
+    [
+      "searchProtocol",
+      "disableSearch",
+      "searchFrontend",
+      "searxngNormalRedirectsChecks",
+      "searxngNormalCustomRedirects",
+      "searxngTorRedirectsChecks",
+      "searxngTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('searxng', to, 'autocomplete');
+        commonHelper.getCookiesFromStorage('searxng', to, 'categories');
+        commonHelper.getCookiesFromStorage('searxng', to, 'disabled_engines');
+        commonHelper.getCookiesFromStorage('searxng', to, 'disabled_plugins');
+        commonHelper.getCookiesFromStorage('searxng', to, 'doi_resolver');
+        commonHelper.getCookiesFromStorage('searxng', to, 'enabled_plugins');
+        commonHelper.getCookiesFromStorage('searxng', to, 'enabled_engines');
+        commonHelper.getCookiesFromStorage('searxng', to, 'image_proxy');
+        commonHelper.getCookiesFromStorage('searxng', to, 'infinite_scroll');
+        commonHelper.getCookiesFromStorage('searxng', to, 'language');
+        commonHelper.getCookiesFromStorage('searxng', to, 'locale');
+        commonHelper.getCookiesFromStorage('searxng', to, 'maintab');
+        commonHelper.getCookiesFromStorage('searxng', to, 'method');
+        commonHelper.getCookiesFromStorage('searxng', to, 'query_in_title');
+        commonHelper.getCookiesFromStorage('searxng', to, 'results_on_new_tab');
+        commonHelper.getCookiesFromStorage('searxng', to, 'safesearch');
+        commonHelper.getCookiesFromStorage('searxng', to, 'simple_style');
+        commonHelper.getCookiesFromStorage('searxng', to, 'theme');
+        commonHelper.getCookiesFromStorage('searxng', to, 'tokens');
+      }
+    }
+  )
+}
+
 function redirect(url) {
   if (disable) return;
   if (!targets.some(rx => rx.test(url.href))) return;
@@ -482,7 +563,10 @@ export default {
   setWhoogleRedirects,
 
   initSearxCookies,
+  setSearxCookies,
+
   initSearxngCookies,
+  setSearxngCookies,
 
   redirect,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
index 07820c26..501390dc 100644
--- a/src/assets/javascripts/helpers/tiktok.js
+++ b/src/assets/javascripts/helpers/tiktok.js
@@ -73,6 +73,29 @@ function initProxiTokCookies(from) {
     })
 }
 
+function setProxiTokCookies() {
+    browser.storage.local.get(
+        [
+            "tiktokProtocol",
+            "disableTiktok",
+            "proxiTokNormalRedirectsChecks",
+            "proxiTokNormalCustomRedirects",
+            "proxiTokTorRedirectsChecks",
+            "proxiTokTorCustomRedirects",
+        ],
+        r => {
+            if (r.disableTiktok || r.tiktokProtocol === undefined) return;
+            let checkedInstances;
+            if (r.youtubeProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects]
+            else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects]
+            for (const to of checkedInstances) {
+                commonHelper.getCookiesFromStorage('proxitok', from, to, 'theme');
+                commonHelper.getCookiesFromStorage('proxitok', from, to, 'api-legacy');
+            }
+        }
+    )
+}
+
 function redirect(url, type, initiator) {
     if (disable) return;
     if (type != "main_frame") return null;
@@ -174,6 +197,7 @@ export default {
     reverse,
 
     initProxiTokCookies,
+    setProxiTokCookies,
 
     initDefaults,
     init,
diff --git a/src/assets/javascripts/helpers/translate/get_lingva_preferences.js b/src/assets/javascripts/helpers/translate/get_lingva_preferences.js
new file mode 100644
index 00000000..f04ea3dc
--- /dev/null
+++ b/src/assets/javascripts/helpers/translate/get_lingva_preferences.js
@@ -0,0 +1,10 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.set(
+    {
+        ['lingva_lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'),
+        lingva_lingva_isauto: localStorage.getItem('isauto'),
+        lingva_lingva_source: localStorage.getItem('source'),
+        lingva_lingva_target: localStorage.getItem('target'),
+    }
+)
diff --git a/src/assets/javascripts/helpers/translate/lingva-preferences.js b/src/assets/javascripts/helpers/translate/lingva-preferences.js
deleted file mode 100644
index eeee2415..00000000
--- a/src/assets/javascripts/helpers/translate/lingva-preferences.js
+++ /dev/null
@@ -1,12 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
-    [
-        "theme",
-    ],
-    r => {
-        let theme = r.theme;
-
-        if (theme != "DEFAULT") localStorage.setItem("chakra-ui-color-mode", r.theme);
-    }
-)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/translate/set_lingva_preferences.js b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
new file mode 100644
index 00000000..7380fa37
--- /dev/null
+++ b/src/assets/javascripts/helpers/translate/set_lingva_preferences.js
@@ -0,0 +1,16 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    [
+        "lingva_chakra-ui-color-mode",
+        "lingva_isauto",
+        "lingva_source",
+        "lingva_target",
+    ],
+    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);
+        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 3efaf544..3ca4dd9b 100644
--- a/src/assets/javascripts/helpers/translate/translate.js
+++ b/src/assets/javascripts/helpers/translate/translate.js
@@ -67,7 +67,6 @@ let
   lingvaNormalCustomRedirects,
   lingvaTorCustomRedirects;
 
-
 let
   disable, // translateDisable
   frontend, // translateFrontend
@@ -107,14 +106,129 @@ function isTranslateRedirects(url, type, frontend) {
   ].includes(protocolHost);
 }
 
-function initLingvaLocalStorage(tabId) {
-  browser.tabs.executeScript(
-    tabId,
-    {
-      file: "/assets/javascripts/helpers/translate/lingva-preferences.js",
-      runAt: "document_start"
+function initLingvaLocalStorage(url, tabId) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "lingvaNormalRedirectsChecks",
+        "lingvaNormalCustomRedirects",
+        "lingvaTorRedirectsChecks",
+        "lingvaTorCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(url);
+        if (![
+          ...r.lingvaNormalRedirectsChecks,
+          ...r.lingvaTorRedirectsChecks,
+          ...r.lingvaNormalCustomRedirects,
+          ...r.lingvaTorCustomRedirects,
+        ].includes(protocolHost)) return;
+        browser.tabs.executeScript(
+          tabId,
+          {
+            file: "/assets/javascripts/helpers/translate/get_lingva_preferences.js",
+            runAt: "document_start"
+          }
+        );
+        resolve(true);
+      }
+    )
+  })
+}
+
+async function setLingvaLocalStorage(url, tabId) {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeFrontend",
+      "lingvaNormalRedirectsChecks",
+      "lingvaNormalCustomRedirects",
+      "lingvaTorRedirectsChecks",
+      "lingvaTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'lingva') return;
+      let protocolHost = commonHelper.protocolHost(url);
+      if (![
+        ...r.lingvaNormalRedirectsChecks,
+        ...r.lingvaTorRedirectsChecks,
+        ...r.lingvaNormalCustomRedirects,
+        ...r.lingvaTorCustomRedirects,
+      ].includes(protocolHost)) return;
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/set_lingva_preferences.js",
+          runAt: "document_start"
+        }
+      );
+      return true;
+    })
+}
+
+function initSimplyTranslateCookies(from) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "translateProtocol",
+        "simplyTranslateNormalRedirectsChecks",
+        "simplyTranslateNormalCustomRedirects",
+        "simplyTranslateTorRedirectsChecks",
+        "simplyTranslateTorCustomRedirects",
+        "simplyTranslateI2pRedirectsChecks",
+        "simplyTranslateI2pCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(from);
+        if (![
+          ...r.simplyTranslateNormalRedirectsChecks,
+          ...r.simplyTranslateNormalCustomRedirects,
+          ...r.simplyTranslateTorRedirectsChecks,
+          ...r.simplyTranslateTorCustomRedirects,
+          ...r.simplyTranslateI2pRedirectsChecks,
+          ...r.simplyTranslateI2pCustomRedirects,
+        ].includes(protocolHost)) resolve();
+
+        let checkedInstances;
+        if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects]
+        else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects]
+        else if (r.translateProtocol == 'i2p') checkedInstances = [...r.simplyTranslateI2pRedirectsChecks, ...r.simplyTranslateI2pCustomRedirects]
+        for (const to of checkedInstances) {
+          commonHelper.copyCookie('simplyTranslate', from, to, 'from_lang');
+          commonHelper.copyCookie('simplyTranslate', from, to, 'to_lang');
+          commonHelper.copyCookie('simplyTranslate', from, to, 'tts_enabled');
+          commonHelper.copyCookie('simplyTranslate', from, to, 'use_text_fields');
+        }
+        resolve(true);
+      }
+    )
+  })
+}
+
+function setSimplyTranslateCookies() {
+  browser.storage.local.get(
+    [
+      "translateProtocol",
+      "translateDisable",
+      "translateFrontend",
+      "simplyTranslateNormalRedirectsChecks",
+      "simplyTranslateNormalCustomRedirects",
+      "simplyTranslateTorRedirectsChecks",
+      "simplyTranslateTorCustomRedirects",
+    ],
+    r => {
+      if (r.translateDisable || r.translateFrontend != 'simplyTranslate' || r.translateProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'from_lang');
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'to_lang');
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled');
+        commonHelper.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields');
+      }
     }
-  );
+  )
 }
 
 function redirect(url) {
@@ -267,7 +381,10 @@ export default {
   getRedirects,
 
   isTranslateRedirects,
+  initSimplyTranslateCookies,
+  setSimplyTranslateCookies,
   initLingvaLocalStorage,
+  setLingvaLocalStorage,
 
   setSimplyTranslateRedirects,
   setLingvaRedirects,
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 2af6a28d..b2469d7c 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -134,18 +134,6 @@ function removeXFrameOptions(e) {
   if (isChanged) return { responseHeaders: e.responseHeaders };
 }
 
-function isNitter(url, type) {
-  if (type !== "main_frame" && type !== "sub_frame") return false;
-
-  let protocolHost = commonHelper.protocolHost(url);
-  return [
-    ...redirects.nitter.normal,
-    ...redirects.nitter.tor,
-    ...nitterNormalCustomRedirects,
-    ...nitterTorCustomRedirects,
-  ].includes(protocolHost);
-}
-
 async function initNitterCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
@@ -190,6 +178,42 @@ async function initNitterCookies(from) {
   })
 }
 
+function setNitterCookies() {
+  browser.storage.local.get(
+    [
+      "twitterProtocol",
+      "disableTwitter",
+      "youtubeFrontend",
+      "nitterNormalRedirectsChecks",
+      "nitterNormalCustomRedirects",
+      "nitterTorRedirectsChecks",
+      "nitterTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('nitter', to, 'theme');
+        commonHelper.getCookiesFromStorage('nitter', to, 'infiniteScroll');
+        commonHelper.getCookiesFromStorage('nitter', to, 'stickyProfile');
+        commonHelper.getCookiesFromStorage('nitter', to, 'bidiSupport');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hideTweetStats');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hideBanner');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hidePins');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hideReplies');
+        commonHelper.getCookiesFromStorage('nitter', to, 'squareAvatars');
+        commonHelper.getCookiesFromStorage('nitter', to, 'mp4Playback');
+        commonHelper.getCookiesFromStorage('nitter', to, 'hlsPlayback');
+        commonHelper.getCookiesFromStorage('nitter', to, 'proxyVideos');
+        commonHelper.getCookiesFromStorage('nitter', to, 'muteVideos');
+        commonHelper.getCookiesFromStorage('nitter', to, 'autoplayGifs');
+      }
+    }
+  )
+}
+
 function initDefaults() {
   fetch('/instances/data.json').then(response => response.text()).then(data => {
     let dataJson = JSON.parse(data);
@@ -248,8 +272,8 @@ export default {
   reverse,
   removeXFrameOptions,
 
-  isNitter,
   initNitterCookies,
+  setNitterCookies,
 
   redirect,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index 17c1ece1..a8acb097 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -50,7 +50,7 @@ let
   wikilessTorCustomRedirects,
   wikilessI2pCustomRedirects;
 
-function initWikilessCookies() {
+function initWikilessCookies(from) {
   return new Promise(resolve => {
     browser.storage.local.get(
       [
@@ -78,14 +78,39 @@ function initWikilessCookies() {
         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)
+        for (const to of checkedInstances) {
           commonHelper.copyCookie('wikiless', from, to, 'theme');
+          commonHelper.copyCookie('wikiless', from, to, 'default_lang');
+        }
         resolve(true);
       }
     )
   })
 }
 
+function setWikilessCookies() {
+  browser.storage.local.get(
+    [
+      "disableWikipedia",
+      "wikipediaProtocol",
+      "wikilessNormalRedirectsChecks",
+      "wikilessNormalCustomRedirects",
+      "wikilessTorRedirectsChecks",
+      "wikilessTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableWikipedia || r.wikipediaProtocol === undefined) 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) {
+        commonHelper.getCookiesFromStorage('wikiless', to, 'theme');
+        commonHelper.getCookiesFromStorage('wikiless', to, 'default_lang');
+      }
+    }
+  )
+}
+
 function redirect(url) {
   if (disable) return;
   if (!targets.test(url.href)) return;
@@ -212,6 +237,7 @@ export default {
   setRedirects,
 
   initWikilessCookies,
+  setWikilessCookies,
 
   redirect,
   initDefaults,
diff --git a/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js b/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js
new file mode 100644
index 00000000..9d052f62
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js
@@ -0,0 +1,7 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.set(
+    {
+        'pipedMaterial_PREFERENCES': localStorage.getItem("PREFERENCES")
+    }
+)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/get_piped_settings.js b/src/assets/javascripts/helpers/youtube/get_piped_preferences.js
index 12e92baa..12e92baa 100644
--- a/src/assets/javascripts/helpers/youtube/get_piped_settings.js
+++ b/src/assets/javascripts/helpers/youtube/get_piped_preferences.js
diff --git a/src/assets/javascripts/helpers/youtube/piped-preferences.js b/src/assets/javascripts/helpers/youtube/piped-preferences.js
deleted file mode 100644
index 8a1f2d0d..00000000
--- a/src/assets/javascripts/helpers/youtube/piped-preferences.js
+++ /dev/null
@@ -1,40 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
-    [
-        "piped_bufferGoal",
-        "piped_comments",
-        "piped_disableLBRY",
-        "piped_enabledCodecs",
-        "piped_homepage",
-        "piped_listen",
-        "piped_minimizeDescription",
-        "piped_playerAutoPlay",
-        "piped_proxyLBRY",
-        "piped_quality",
-        "piped_region",
-        "piped_selectedSkip",
-        "piped_sponsorblock",
-        "piped_theme",
-        "piped_volume",
-        "piped_watchHistory",
-    ],
-    r => {
-        localStorage.setItem("bufferGoal", r.piped_bufferGoal);
-        localStorage.setItem("comments", r.piped_comments);
-        localStorage.setItem("disableLBRY", r.piped_disableLBRY);
-        localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
-        localStorage.setItem("homepage", r.piped_homepage);
-        localStorage.setItem("listen", r.piped_listen);
-        localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
-        localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
-        localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
-        localStorage.setItem("quality", r.piped_quality);
-        localStorage.setItem("region", r.piped_region);
-        localStorage.setItem("selectedSkip", r.piped_selectedSkip);
-        localStorage.setItem("sponsorblock", r.piped_sponsorblock);
-        localStorage.setItem("theme", r.piped_theme);
-        localStorage.setItem("volume", r.piped_volume);
-        localStorage.setItem("watchHistory", r.piped_watchHistory);
-    }
-)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/piped.js b/src/assets/javascripts/helpers/youtube/piped.js
deleted file mode 100644
index e1f7b0df..00000000
--- a/src/assets/javascripts/helpers/youtube/piped.js
+++ /dev/null
@@ -1,89 +0,0 @@
-"use strict";
-window.browser = window.browser || window.chrome;
-
-import commonHelper from '../common.js'
-
-async function initDefaults() {
-  await browser.storage.local.set({
-    youtubeVolume: 100,
-    youtubeAutoplay: false,
-    youtubeListen: false,
-
-    pipedBufferGoal: 300,
-    pipedComments: true,
-    pipedDisableLBRY: false,
-    pipedEnabledCodecs: ["av1", "vp9", "avc"],
-    pipedHomepage: "trending",
-    pipedMinimizeDescription: false,
-    pipedProxyLBRY: false,
-    pipedQuality: 0,
-    pipedRegion: "US",
-    pipedSelectedSkip: ["sponsor", "interaction", "selfpromo", "music_offtopic"],
-    pipedSponsorblock: true,
-    pipedDdlTheme: 'auto',
-    pipedWatchHistory: false,
-  })
-}
-
-async function copyPipedLocalStorage(url, tabId) {
-  return new Promise(resolve => {
-    browser.storage.local.get(
-      [
-        "pipedNormalRedirectsChecks",
-        "pipedNormalCustomRedirects",
-        "pipedTorRedirectsChecks",
-        "pipedTorCustomRedirects",
-      ],
-      r => {
-        let protocolHost = commonHelper.protocolHost(url);
-        if (![
-          ...r.pipedNormalCustomRedirects,
-          ...r.pipedNormalRedirectsChecks,
-          ...r.pipedTorRedirectsChecks,
-          ...r.pipedTorCustomRedirects,
-        ].includes(protocolHost)) resolve();
-        browser.tabs.executeScript(
-          tabId,
-          {
-            file: "/assets/javascripts/helpers/youtube/get_piped_settings.js",
-            runAt: "document_start"
-          }
-        );
-        resolve(true);
-      })
-  })
-}
-
-async function initPipedLocalStorage(url, tabId) {
-  browser.storage.local.get(
-    [
-      "youtubeProtocol",
-      "pipedNormalRedirectsChecks",
-      "pipedNormalCustomRedirects",
-      "pipedTorRedirectsChecks",
-      "pipedTorCustomRedirects",
-    ],
-    r => {
-      let protocolHost = commonHelper.protocolHost(url);
-      if (![
-        ...r.pipedNormalRedirectsChecks,
-        ...r.pipedTorRedirectsChecks,
-        ...r.pipedNormalCustomRedirects,
-        ...r.pipedTorCustomRedirects,
-      ].includes(protocolHost)) return;
-      browser.tabs.executeScript(
-        tabId,
-        {
-          file: "/assets/javascripts/helpers/youtube/piped-preferences.js",
-          runAt: "document_start"
-        }
-      );
-      return true;
-    })
-}
-
-export default {
-  initDefaults,
-  initPipedLocalStorage,
-  copyPipedLocalStorage,
-}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
deleted file mode 100644
index c669c47e..00000000
--- a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
+++ /dev/null
@@ -1,37 +0,0 @@
-window.browser = window.browser || window.chrome;
-
-browser.storage.local.get(
-    [
-        "theme",
-        "youtubeAutoplay",
-        "youtubeVolume",
-        "youtubeListen",
-
-        "pipedDisableLBRY",
-        "pipedProxyLBRY",
-        "pipedSelectedSkip",
-        "pipedSponsorblock",
-
-        "pipedMaterialSkipToLastPoint",
-    ],
-    r => {
-        let prefs = {};
-        if (localStorage.getItem("PREFERENCES"))
-            prefs = JSON.parse(localStorage.getItem("PREFERENCES"));
-
-        if (r.theme == 'dark') prefs.darkMode = true;
-        if (r.theme == 'light') prefs.darkMode = false;
-
-        prefs.volume = r.youtubeVolume / 100;
-        prefs.playerAutoplay = r.youtubeAutoplay;
-
-        prefs.listen = r.youtubeListen;
-        prefs.disableLBRY = r.pipedDisableLBRY;
-        prefs.proxyLBRY = r.pipedProxyLBRY;
-        prefs.sponsorblock = r.pipedSponsorblock;
-        prefs.skipToLastPoint = r.pipedMaterialSkipToLastPoint;
-        prefs.selectedSkip = r.pipedSelectedSkip;
-
-        localStorage.setItem("PREFERENCES", JSON.stringify(prefs));
-    }
-)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial.js b/src/assets/javascripts/helpers/youtube/pipedMaterial.js
deleted file mode 100644
index 5e5a577d..00000000
--- a/src/assets/javascripts/helpers/youtube/pipedMaterial.js
+++ /dev/null
@@ -1,31 +0,0 @@
-async function initDefaults() {
-  await browser.storage.local.set({
-    theme: "dark",
-    youtubeAutoplay: false,
-    youtubeVolume: 100,
-    youtubeListen: false,
-
-    pipedDisableLBRY: false,
-    pipedProxyLBRY: false,
-    pipedSelectedSkip: [],
-    pipedSponsorblock: true,
-
-    pipedMaterialSkipToLastPoint: true,
-  })
-}
-
-function initPipedMaterialLocalStorage(tabId) {
-  if (!disable && frontend == 'pipedMaterial' && enableCustomSettings)
-    browser.tabs.executeScript(
-      tabId,
-      {
-        file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js",
-        runAt: "document_start"
-      }
-    );
-}
-
-export default {
-  initDefaults,
-  initPipedMaterialLocalStorage,
-}
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js b/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js
new file mode 100644
index 00000000..7e12fe26
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js
@@ -0,0 +1,8 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    "pipedMaterial_PREFERENCES",
+    r => {
+        if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
+    }
+)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/set_piped_preferences.js b/src/assets/javascripts/helpers/youtube/set_piped_preferences.js
new file mode 100644
index 00000000..ffb3e218
--- /dev/null
+++ b/src/assets/javascripts/helpers/youtube/set_piped_preferences.js
@@ -0,0 +1,40 @@
+window.browser = window.browser || window.chrome;
+
+browser.storage.local.get(
+    [
+        "piped_bufferGoal",
+        "piped_comments",
+        "piped_disableLBRY",
+        "piped_enabledCodecs",
+        "piped_homepage",
+        "piped_listen",
+        "piped_minimizeDescription",
+        "piped_playerAutoPlay",
+        "piped_proxyLBRY",
+        "piped_quality",
+        "piped_region",
+        "piped_selectedSkip",
+        "piped_sponsorblock",
+        "piped_theme",
+        "piped_volume",
+        "piped_watchHistory",
+    ],
+    r => {
+        if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal);
+        if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments);
+        if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY);
+        if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
+        if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage);
+        if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen);
+        if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
+        if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
+        if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
+        if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality);
+        if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region);
+        if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip);
+        if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock);
+        if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme);
+        if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume);
+        if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory);
+    }
+)
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 96f9959b..31cc444e 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -3,8 +3,6 @@
 window.browser = window.browser || window.chrome;
 
 import commonHelper from '../common.js'
-import piped from './piped.js';
-import pipedMaterial from './pipedMaterial.js';
 
 const targets = [
   /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
@@ -330,9 +328,6 @@ async function initDefaults() {
           youtubeEmbedFrontend: 'invidious',
           youtubeProtocol: 'normal',
         })
-
-        await piped.initDefaults();
-        await pipedMaterial.initDefaults();
         resolve();
       })
     })
@@ -420,7 +415,7 @@ async function initInvidiousCookies(from) {
           ...r.invidiousTorRedirectsChecks,
           ...r.invidiousNormalCustomRedirects,
           ...r.invidiousTorCustomRedirects,
-        ].includes(protocolHost)) resolve();
+        ].includes(protocolHost)) return;
         let checkedInstances;
         if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects]
         else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects]
@@ -429,7 +424,150 @@ async function initInvidiousCookies(from) {
         resolve(true);
       }
     )
-  }
+  })
+}
+
+function setInvidiousCookies() {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeProtocol",
+      "youtubeFrontend",
+      "invidiousNormalRedirectsChecks",
+      "invidiousNormalCustomRedirects",
+      "invidiousTorRedirectsChecks",
+      "invidiousTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'invidious' || r.youtubeProtocol === undefined) 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)
+        commonHelper.getCookiesFromStorage('invidious', to, 'PREFS');
+    }
+  )
+}
+
+async function initPipedLocalStorage(url, tabId) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "pipedNormalRedirectsChecks",
+        "pipedNormalCustomRedirects",
+        "pipedTorRedirectsChecks",
+        "pipedTorCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(url);
+        if (![
+          ...r.pipedNormalCustomRedirects,
+          ...r.pipedNormalRedirectsChecks,
+          ...r.pipedTorRedirectsChecks,
+          ...r.pipedTorCustomRedirects,
+        ].includes(protocolHost)) resolve();
+        browser.tabs.executeScript(
+          tabId,
+          {
+            file: "/assets/javascripts/helpers/youtube/get_piped_settings.js",
+            runAt: "document_start"
+          }
+        );
+        resolve(true);
+      }
+    )
+  })
+}
+
+async function setPipedLocalStorage(url, tabId) {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeFrontend",
+      "pipedNormalRedirectsChecks",
+      "pipedNormalCustomRedirects",
+      "pipedTorRedirectsChecks",
+      "pipedTorCustomRedirects",
+    ],
+    r => {
+      if (!r.disableYoutube && r.youtubeFrontend == 'pipedMaterial') return;
+      let protocolHost = commonHelper.protocolHost(url);
+      if (![
+        ...r.pipedNormalRedirectsChecks,
+        ...r.pipedTorRedirectsChecks,
+        ...r.pipedNormalCustomRedirects,
+        ...r.pipedTorCustomRedirects,
+      ].includes(protocolHost)) return;
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/set_piped_preferences.js",
+          runAt: "document_start"
+        }
+      );
+      return true;
+    }
+  )
+}
+
+async function initPipedMaterialLocalStorage(tabId) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "pipedMaterialNormalRedirectsChecks",
+        "pipedMaterialNormalCustomRedirects",
+        "pipedMaterialTorRedirectsChecks",
+        "pipedMaterialTorCustomRedirects",
+      ],
+      r => {
+        const protocolHost = commonHelper.protocolHost(url);
+        if (![
+          ...r.pipedMaterialNormalCustomRedirects,
+          ...r.pipedMaterialNormalRedirectsChecks,
+          ...r.pipedMaterialTorRedirectsChecks,
+          ...r.pipedMaterialTorCustomRedirects,
+        ].includes(protocolHost)) return;
+        browser.tabs.executeScript(
+          tabId,
+          {
+            file: "/assets/javascripts/helpers/youtube/get_pipedMaterial_preferences.js",
+            runAt: "document_start"
+          }
+        );
+        resolve(true);
+      }
+    )
+  })
+}
+
+async function setPipedMaterialLocalStorage(url, tabId) {
+  browser.storage.local.get(
+    [
+      "disableYoutube",
+      "youtubeFrontend",
+      "pipedMaterialNormalRedirectsChecks",
+      "pipedMaterialTorRedirectsChecks",
+      "pipedMaterialNormalCustomRedirects",
+      "pipedMaterialTorCustomRedirects",
+    ],
+    r => {
+      if (r.disableYoutube || r.youtubeFrontend != 'pipedMaterial') return;
+      const protocolHost = commonHelper.protocolHost(url);
+      if (![
+        ...r.pipedMaterialNormalRedirectsChecks,
+        ...r.pipedMaterialTorRedirectsChecks,
+        ...r.pipedMaterialNormalCustomRedirects,
+        ...r.pipedMaterialTorCustomRedirects,
+      ].includes(protocolHost)) return;
+      browser.tabs.executeScript(
+        tabId,
+        {
+          file: "/assets/javascripts/helpers/youtube/set_pipedMaterial_preferences.js",
+          runAt: "document_start"
+        }
+      );
+      return true;
+    }
   )
 }
 
@@ -456,15 +594,12 @@ function removeXFrameOptions(e) {
   if (isChanged) return { responseHeaders: e.responseHeaders };
 }
 
-let
-  initPipedLocalStorage = piped.initPipedLocalStorage,
-  initPipedMaterialLocalStorage = pipedMaterial.initPipedMaterialLocalStorage,
-  copyPipedLocalStorage = piped.copyPipedLocalStorage;
-
 export default {
-  initPipedLocalStorage,
   initPipedMaterialLocalStorage,
+  setPipedLocalStorage,
+  setPipedMaterialLocalStorage,
   initInvidiousCookies,
+  setInvidiousCookies,
   getRedirects,
 
   redirect,
@@ -474,7 +609,7 @@ export default {
 
   isPipedorInvidious,
 
-  copyPipedLocalStorage,
+  initPipedLocalStorage,
 
   initDefaults,
   init,