about summary refs log tree commit diff stats
path: root/src/assets
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-03-05 11:44:59 +0300
committerManeraKai <manerakai@protonmail.com>2022-03-05 11:44:59 +0300
commit5619a96b4a6cecc199291009d53367d9c955e391 (patch)
tree343428c6b29602efa5967dd60941b6b0422b3b83 /src/assets
parentupdate instances (diff)
downloadlibredirect-5619a96b4a6cecc199291009d53367d9c955e391.zip
Adding more settings and combining theme in the general page #80
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/helpers/general.js30
-rw-r--r--src/assets/javascripts/helpers/twitter.js63
-rw-r--r--src/assets/javascripts/helpers/youtube/invidious-preferences.js6
-rw-r--r--src/assets/javascripts/helpers/youtube/piped-preferences.js27
-rw-r--r--src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js6
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js109
6 files changed, 153 insertions, 88 deletions
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
index fa911b4f..15379288 100644
--- a/src/assets/javascripts/helpers/general.js
+++ b/src/assets/javascripts/helpers/general.js
@@ -9,6 +9,22 @@ function setAlwaysUsePreferred(val) {
     console.log("alwaysUsePreferred: ", alwaysUsePreferred)
 }
 
+let theme;
+const getTheme = () => theme;
+function setTheme(val) {
+    theme = val
+    browser.storage.local.set({ theme });
+    console.log("theme: ", theme)
+}
+
+let applyThemeToSites;
+const getApplyThemeToSites = () => applyThemeToSites;
+function setApplyThemeToSites(val) {
+    applyThemeToSites = val;
+    browser.storage.local.set({ applyThemeToSites })
+    console.log("applyThemeToSites: ", applyThemeToSites)
+}
+
 let exceptions = {
     "url": [],
     "regex": [],
@@ -36,11 +52,17 @@ async function init() {
         resolve => browser.storage.local.get(
             [
                 "exceptions",
-                "alwaysUsePreferred"
+                "alwaysUsePreferred",
+                "theme",
+                "applyThemeToSites",
             ],
             r => { // r = result
                 if (r.exceptions) exceptions = r.exceptions;
                 alwaysUsePreferred = r.alwaysUsePreferred ?? false;
+
+                theme = r.them ?? "DEFAULT"
+                applyThemeToSites = r.applyThemeToSites ?? false;
+
                 resolve();
             }
         )
@@ -54,6 +76,12 @@ export default {
     getAlwaysUsePreferred,
     setAlwaysUsePreferred,
 
+    getApplyThemeToSites,
+    setApplyThemeToSites,
+
+    getTheme,
+    setTheme,
+
     isException,
     init,
 }
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 9c85fa1b..6bd433b7 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -182,6 +182,35 @@ function changeInstance(url) {
   return `${randomInstance}${url.pathname}${url.search}`;
 }
 
+function isNitter(url, type) {
+  let protocolHost = `${url.protocol}//${url.host}`;
+
+  if (type !== "main_frame" && type !== "sub_frame") return false;
+
+  return [
+    ...redirects.nitter.normal,
+    ...redirects.nitter.tor,
+    ...nitterNormalCustomRedirects,
+    ...nitterTorCustomRedirects,
+  ].includes(protocolHost);
+}
+
+let theme;
+let applyThemeToSites;
+function initNitterCookies(url) {
+  let protocolHost = `${url.protocol}//${url.host}`;
+  let themeValue;
+  if (theme == 'light') themeValue = 'Twitter';
+  if (theme == 'dark') themeValue = 'Twitter Dark';
+
+  if (applyThemeToSites && themeValue != 'DEFAULT')
+    browser.cookies.set({
+      url: protocolHost,
+      name: "theme",
+      value: themeValue
+    })
+}
+
 async function init() {
   return new Promise((resolve) => {
     fetch('/instances/data.json').then(response => response.text()).then(data => {
@@ -189,31 +218,42 @@ async function init() {
       browser.storage.local.get(
         [
           "disableTwitter",
+
           "twitterRedirects",
+
+          "theme",
+          "applyThemeToSites",
+
           "nitterNormalRedirectsChecks",
           "nitterNormalCustomRedirects",
+
           "nitterTorRedirectsChecks",
           "nitterTorCustomRedirects",
+
           "twitterProtocol",
+
           "alwaysUsePreferred",
         ],
-        (result) => {
-          disable = result.disableTwitter ?? false;
+        r => {
+          disable = r.disableTwitter ?? false;
 
-          protocol = result.twitterProtocol ?? "normal";
+          protocol = r.twitterProtocol ?? "normal";
 
-          bypassWatchOnTwitter = result.bypassWatchOnTwitter ?? true;
+          bypassWatchOnTwitter = r.bypassWatchOnTwitter ?? true;
 
-          alwaysUsePreferred = result.alwaysUsePreferred ?? true;
+          alwaysUsePreferred = r.alwaysUsePreferred ?? true;
+
+          theme = r.theme ?? 'DEFAULT';
+          applyThemeToSites = r.applyThemeToSites ?? false;
 
           redirects.nitter = dataJson.nitter;
-          if (result.twitterRedirects) redirects = result.twitterRedirects;
+          if (r.twitterRedirects) redirects = r.twitterRedirects;
 
-          nitterNormalRedirectsChecks = result.nitterNormalRedirectsChecks ?? [...redirects.nitter.normal];
-          nitterNormalCustomRedirects = result.nitterNormalCustomRedirects ?? [];
+          nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks ?? [...redirects.nitter.normal];
+          nitterNormalCustomRedirects = r.nitterNormalCustomRedirects ?? [];
 
-          nitterTorRedirectsChecks = result.nitterTorRedirectsChecks ?? [...redirects.nitter.tor];
-          nitterTorCustomRedirects = result.nitterTorCustomRedirects ?? [];
+          nitterTorRedirectsChecks = r.nitterTorRedirectsChecks ?? [...redirects.nitter.tor];
+          nitterTorCustomRedirects = r.nitterTorCustomRedirects ?? [];
 
           resolve();
         }
@@ -248,6 +288,9 @@ export default {
   getProtocol,
   setProtocol,
 
+  isNitter,
+  initNitterCookies,
+
   redirect,
   init,
   changeInstance,
diff --git a/src/assets/javascripts/helpers/youtube/invidious-preferences.js b/src/assets/javascripts/helpers/youtube/invidious-preferences.js
index f60031fc..22a7dc71 100644
--- a/src/assets/javascripts/helpers/youtube/invidious-preferences.js
+++ b/src/assets/javascripts/helpers/youtube/invidious-preferences.js
@@ -19,7 +19,7 @@ browser.storage.local.get(
         "youtubeVolume",
         "youtubeAutoplay",
         "OnlyEmbeddedVideo",
-        "youtubeTheme",
+        "theme",
         "invidiousVideoQuality",
     ], (result) => {
         let prefs = getCookie();
@@ -31,8 +31,8 @@ browser.storage.local.get(
         if (result.invidiousVideoQuality !== undefined && prefs.quality !== result.invidiousVideoQuality)
             prefs.quality = result.invidiousVideoQuality;
 
-        if (result.youtubeTheme !== undefined && prefs.dark_mode !== result.youtubeTheme)
-            prefs.dark_mode = result.youtubeTheme;
+        if (result.theme !== undefined && prefs.dark_mode !== result.theme)
+            prefs.dark_mode = result.theme;
 
         if (result.youtubeVolume !== undefined && prefs.volume !== result.youtubeVolume)
             prefs.volume = result.youtubeVolume;
diff --git a/src/assets/javascripts/helpers/youtube/piped-preferences.js b/src/assets/javascripts/helpers/youtube/piped-preferences.js
index 5803a1ae..6edd5ba2 100644
--- a/src/assets/javascripts/helpers/youtube/piped-preferences.js
+++ b/src/assets/javascripts/helpers/youtube/piped-preferences.js
@@ -2,28 +2,33 @@ window.browser = window.browser || window.chrome;
 
 browser.storage.local.get(
     [
-        "youtubeTheme",
+        "theme",
+        "applyThemeToSites",
+
         "youtubeVolume",
         "youtubeAutoplay"
     ],
-    res => {
+    r => {
+        let applyThemeToSites = r.applyThemeToSites ?? false;
+
         if (
-            res.youtubeTheme != "DEFAULT" &&
-            localStorage.getItem("theme") != res.youtubeTheme
+            applyThemeToSites &&
+            r.theme != "DEFAULT" &&
+            localStorage.getItem("theme") != r.theme
         )
-            localStorage.setItem("theme", res.youtubeTheme);
+            localStorage.setItem("theme", r.theme);
 
         if (
-            res.youtubeVolume != "--" &&
-            localStorage.getItem("volume") != res.youtubeVolume
+            r.youtubeVolume != "--" &&
+            localStorage.getItem("volume") != r.youtubeVolume
         )
-            localStorage.setItem("volume", res.youtubeVolume / 100);
+            localStorage.setItem("volume", r.youtubeVolume / 100);
 
         if (
-            res.youtubeAutoplay != "DEFAULT" &&
-            localStorage.getItem("playerAutoPlay") != res.youtubeAutoplay
+            r.youtubeAutoplay != "DEFAULT" &&
+            localStorage.getItem("playerAutoPlay") != r.youtubeAutoplay
         )
-            localStorage.setItem("playerAutoPlay", res.youtubeAutoplay);
+            localStorage.setItem("playerAutoPlay", r.youtubeAutoplay);
     }
 )
 
diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
index c47b8c86..1c6458da 100644
--- a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
+++ b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js
@@ -2,7 +2,7 @@ window.browser = window.browser || window.chrome;
 
 browser.storage.local.get(
     [
-        "youtubeTheme",
+        "theme",
         "youtubeAutoplay"
     ],
     res => {
@@ -13,8 +13,8 @@ browser.storage.local.get(
         ) ?? {};
         let oldPrefs = { ...prefs };
 
-        if (res.youtubeTheme == 'dark') prefs.darkMode = true;
-        if (res.youtubeTheme == 'light') prefs.darkMode = false;
+        if (res.theme == 'dark') prefs.darkMode = true;
+        if (res.theme == 'light') prefs.darkMode = false;
 
         if (res.youtubeAutoplay != "DEFAULT") prefs.playerAutoplay = res.youtubeAutoplay;
 
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 3866f72e..e551255e 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -215,7 +215,7 @@ let theme;
 const getTheme = () => theme;
 function setTheme(val) {
   theme = val;
-  browser.storage.local.set({ youtubeTheme: theme })
+  browser.storage.local.set({ theme: theme })
   console.log("theme: ", theme)
 }
 
@@ -495,29 +495,10 @@ function changeInstance(url) {
   return `${randomInstance}${url.pathname}${url.search}`;
 }
 
-function isPipedorInvidious(url, type) {
+function isPipedorInvidious(url, type, frontend) {
   let protocolHost = `${url.protocol}//${url.host}`;
-  return (type === "main_frame" || type === "sub_frame") && [
-    ...redirects.invidious.normal,
-    ...redirects.invidious.tor,
-    ...invidiousNormalCustomRedirects,
-    ...invidiousTorCustomRedirects,
-
-    ...redirects.piped.normal,
-    ...redirects.piped.tor,
-    ...pipedNormalCustomRedirects,
-    ...pipedTorCustomRedirects,
-  ].includes(protocolHost);
-}
 
-function isUrlPipedorInvidious(url, frontend) {
-  try {
-    url = new URL(url);
-  }
-  catch (error) {
-    return
-  }
-  let protocolHost = `${url.protocol}//${url.host}`;
+  if (type !== "main_frame" && type !== "sub_frame") return false;
 
   if (frontend == 'invidious')
     return [
@@ -556,10 +537,13 @@ function isUrlPipedorInvidious(url, frontend) {
   ].includes(protocolHost);
 }
 
+let applyThemeToSites;
 function addUrlParams(url) {
   let protocolHost = `${url.protocol}//${url.host}`;
   let isChanged = false;
   console.log("Adding URL Params", protocolHost);
+  console.log("searchParams", url.searchParams);
+  let oldParams = { ...url.searchParams };
   if (
     [
       ...redirects.invidious.normal,
@@ -568,8 +552,10 @@ function addUrlParams(url) {
       ...invidiousTorCustomRedirects
     ].includes(protocolHost)
   ) {
-    if (!url.searchParams.has("dark_mode") && theme != "DEFAULT") {
-      url.searchParams.append("dark_mode", theme);
+
+    if (applyThemeToSites && !url.searchParams.has("dark_mode") && theme != 'DEFAULT') {
+      if (theme == 'dark') url.searchParams.append("dark_mode", true);
+      else if (theme == 'light') url.searchParams.append("dark_mode", false);
       isChanged = true;
     }
 
@@ -602,8 +588,8 @@ function addUrlParams(url) {
       url.searchParams.append("subtitles", invidiousSubtitles);
       isChanged = true;
     }
-
-  } else if (
+  }
+  else if (
     [
       ...redirects.piped.normal,
       ...redirects.piped.tor,
@@ -626,12 +612,13 @@ function addUrlParams(url) {
       url.searchParams.append("playerAutoPlay", autoplay);
       isChanged = true;
     }
-
   }
+
   if (isChanged) return url.href;
   else return;
 }
 
+
 function initPipedLocalStorage(tabId) {
   browser.tabs.executeScript(
     tabId,
@@ -670,7 +657,8 @@ async function init() {
         [
           "invidiousAlwaysProxy",
           "invidiousVideoQuality",
-          "youtubeTheme",
+          "theme",
+          "applyThemeToSites",
           "persistInvidiousPrefs",
           "disableYoutube",
           "OnlyEmbeddedVideo",
@@ -706,51 +694,53 @@ async function init() {
           "youtubeEmbedExceptions",
           "bypassWatchOnYoutube"
         ],
-        (result) => {
+        r => { // r = result
           redirects.invidious = dataJson.invidious;
-          if (result.youtubeRedirects) redirects = result.youtubeRedirects;
+          if (r.youtubeRedirects) redirects = r.youtubeRedirects;
+
+          disable = r.disableYoutube ?? false;
+          protocol = r.youtubeProtocol ?? 'normal';
+          frontend = r.youtubeFrontend ?? 'invidious';
+          youtubeEmbedFrontend = r.youtubeEmbedFrontend ?? 'invidious';
 
-          disable = result.disableYoutube ?? false;
-          protocol = result.youtubeProtocol ?? 'normal';
-          frontend = result.youtubeFrontend ?? 'invidious';
-          youtubeEmbedFrontend = result.youtubeEmbedFrontend ?? 'invidious';
+          theme = r.theme ?? 'DEFAULT';
+          applyThemeToSites = r.applyThemeToSites ?? false;
 
-          theme = result.youtubeTheme ?? 'DEFAULT';
-          volume = result.youtubeVolume ?? '--';
-          autoplay = result.youtubeAutoplay ?? 'DEFAULT';
+          volume = r.youtubeVolume ?? '--';
+          autoplay = r.youtubeAutoplay ?? 'DEFAULT';
 
-          invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? 'DEFAULT';
-          OnlyEmbeddedVideo = result.OnlyEmbeddedVideo ?? 'both';
-          invidiousVideoQuality = result.invidiousVideoQuality ?? 'DEFAULT';
-          invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'DEFAULT';
-          invidiousSubtitles = result.invidiousSubtitles || '';
+          invidiousAlwaysProxy = r.invidiousAlwaysProxy ?? 'DEFAULT';
+          OnlyEmbeddedVideo = r.OnlyEmbeddedVideo ?? 'both';
+          invidiousVideoQuality = r.invidiousVideoQuality ?? 'DEFAULT';
+          invidiousPlayerStyle = r.invidiousPlayerStyle ?? 'DEFAULT';
+          invidiousSubtitles = r.invidiousSubtitles || '';
 
-          invidiousNormalRedirectsChecks = result.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal];
-          invidiousNormalCustomRedirects = result.invidiousNormalCustomRedirects ?? [];
+          invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal];
+          invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects ?? [];
 
-          invidiousTorRedirectsChecks = result.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor];
-          invidiousTorCustomRedirects = result.invidiousTorCustomRedirects ?? [];
+          invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor];
+          invidiousTorCustomRedirects = r.invidiousTorCustomRedirects ?? [];
 
-          pipedNormalRedirectsChecks = result.pipedNormalRedirectsChecks ?? [...redirects.piped.normal];
-          pipedNormalCustomRedirects = result.pipedNormalCustomRedirects ?? [];
+          pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks ?? [...redirects.piped.normal];
+          pipedNormalCustomRedirects = r.pipedNormalCustomRedirects ?? [];
 
-          pipedTorRedirectsChecks = result.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
-          pipedTorCustomRedirects = result.pipedTorCustomRedirects ?? [];
+          pipedTorRedirectsChecks = r.pipedTorRedirectsChecks ?? [...redirects.piped.tor];
+          pipedTorCustomRedirects = r.pipedTorCustomRedirects ?? [];
 
 
-          pipedMaterialNormalRedirectsChecks = result.pipedMaterialNormalRedirectsChecks ?? [...redirects.pipedMaterial.normal];
-          pipedMaterialNormalCustomRedirects = result.pipedMaterialNormalCustomRedirects ?? [];
+          pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks ?? [...redirects.pipedMaterial.normal];
+          pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects ?? [];
 
-          pipedMaterialTorRedirectsChecks = result.pipedMaterialTorRedirectsChecks ?? [...redirects.pipedMaterial.tor];
-          pipedMaterialTorCustomRedirects = result.pipedMaterialTorCustomRedirects ?? [];
+          pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks ?? [...redirects.pipedMaterial.tor];
+          pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects ?? [];
 
-          persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
+          persistInvidiousPrefs = r.persistInvidiousPrefs ?? false;
 
-          alwaysUsePreferred = result.alwaysUsePreferred ?? true;
+          alwaysUsePreferred = r.alwaysUsePreferred ?? true;
 
-          bypassWatchOnYoutube = result.bypassWatchOnYoutube ?? true;
+          bypassWatchOnYoutube = r.bypassWatchOnYoutube ?? true;
 
-          if (result.youtubeEmbedExceptions) exceptions = result.youtubeEmbedExceptions;
+          if (r.youtubeEmbedExceptions) exceptions = r.youtubeEmbedExceptions;
 
           resolve();
         });
@@ -780,7 +770,6 @@ export default {
   changeInstance,
 
   isPipedorInvidious,
-  isUrlPipedorInvidious,
   addUrlParams,
 
   getDisable,
@@ -859,4 +848,4 @@ export default {
   isException,
 
   init,
-};
+};
\ No newline at end of file