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.js39
-rw-r--r--src/assets/javascripts/helpers/reddit.js295
2 files changed, 133 insertions, 201 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 7b3a20a5..f0da54c9 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -128,7 +128,6 @@ async function processDefaultCustomInstances(
 
   async function getFromStorage() {
     return new Promise(async resolve => {
-
       browser.storage.local.get(
         [
           redirectsChecks,
@@ -158,16 +157,6 @@ async function processDefaultCustomInstances(
     if (nameDefaultRedirects.length == 0) isTrue = false;
     nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue;
   }
-
-  async function setRedirectsChecks(val) {
-    await browser.storage.local.set({ [redirectsChecks]: val });
-  }
-
-  async function setCustom(val) {
-    await browser.storage.local.set({ [customRedirects]: val });
-  }
-
-
   nameCheckListElement.innerHTML =
     [
       `<div>
@@ -182,7 +171,10 @@ async function processDefaultCustomInstances(
           let latencyLimit = (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms')
           let latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : '';
 
-          return `<div><x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x><input type="checkbox" class="${x}"/></div>`;
+          return `<div>
+                    <x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x>
+                    <input type="checkbox" class="${x}"/>
+                  </div>`;
         }
       ),
     ].join('\n<hr>\n');
@@ -196,7 +188,7 @@ async function processDefaultCustomInstances(
     else
       nameDefaultRedirects = [];
 
-    await setRedirectsChecks(nameDefaultRedirects);
+    await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
     calcNameCheckBoxes();
   });
 
@@ -209,7 +201,7 @@ async function processDefaultCustomInstances(
           let index = nameDefaultRedirects.indexOf(element.className);
           if (index > -1) nameDefaultRedirects.splice(index, 1);
         }
-        await setRedirectsChecks(nameDefaultRedirects);
+        await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
         calcNameCheckBoxes();
       });
   }
@@ -229,16 +221,16 @@ async function processDefaultCustomInstances(
       ).join('\n');
 
     for (const item of nameCustomInstances) {
-      nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", () => {
+      nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
         let index = nameCustomInstances.indexOf(item);
         if (index > -1) nameCustomInstances.splice(index, 1);
-        setCustom(nameCustomInstances);
+        await browser.storage.local.set({ [customRedirects]: nameCustomInstances });
         calcNameCustomInstances();
       });
     }
   }
   calcNameCustomInstances();
-  nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", event => {
+  nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", async event => {
     event.preventDefault();
     let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName('custom-instance')[0];
     let url = new URL(nameCustomInstanceInput.value);
@@ -246,7 +238,7 @@ async function processDefaultCustomInstances(
     if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
       if (!nameCustomInstances.includes(protocolHostVar)) {
         nameCustomInstances.push(protocolHostVar)
-        setCustom(nameCustomInstances);
+        await browser.storage.local.set({ [customRedirects]: nameCustomInstances });
         nameCustomInstanceInput.value = '';
       }
       calcNameCustomInstances();
@@ -298,6 +290,16 @@ async function testLatency(element, instances) {
     resolve(myList);
   })
 }
+
+function copyCookie(targetUrl, url, name) {
+  browser.cookies.get(
+    { url: protocolHost(targetUrl), name: name },
+    r => {
+      if (r) browser.cookies.set({ url: url, name: name, value: r.value })
+    }
+  )
+}
+
 export default {
   getRandomInstance,
   updateInstances,
@@ -305,4 +307,5 @@ export default {
   processDefaultCustomInstances,
   isRtl,
   testLatency,
+  copyCookie
 }
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 7c123797..04ac2a4b 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -39,14 +39,14 @@ function setLibredditRedirects(val) {
       var index = libredditNormalRedirectsChecks.indexOf(item);
       if (index !== -1) libredditNormalRedirectsChecks.splice(index, 1);
     }
-  setLibredditNormalRedirectsChecks(libredditNormalRedirectsChecks);
+  browser.storage.local.set({ libredditNormalRedirectsChecks })
 
   for (const item of libredditTorRedirectsChecks)
     if (!redirects.libreddit.normal.includes(item)) {
       var index = libredditTorRedirectsChecks.indexOf(item);
       if (index !== -1) libredditTorRedirectsChecks.splice(index, 1);
     }
-  setLibredditTorRedirectsChecks(libredditTorRedirectsChecks);
+  browser.storage.local.set({ libredditTorRedirectsChecks })
 }
 
 function setTedditRedirects(val) {
@@ -58,79 +58,25 @@ function setTedditRedirects(val) {
       var index = tedditNormalRedirectsChecks.indexOf(item);
       if (index !== -1) tedditNormalRedirectsChecks.splice(index, 1);
     }
-  setTedditNormalRedirectsChecks(tedditNormalRedirectsChecks);
+  browser.storage.local.set({ tedditNormalRedirectsChecks })
 
   for (const item of tedditTorRedirectsChecks)
     if (!redirects.teddit.normal.includes(item)) {
       var index = tedditTorRedirectsChecks.indexOf(item);
       if (index !== -1) tedditTorRedirectsChecks.splice(index, 1);
     }
-  setTedditTorRedirectsChecks(tedditTorRedirectsChecks);
+  browser.storage.local.set({ tedditTorRedirectsChecks })
 }
 
 let libredditNormalRedirectsChecks;
-const getLibredditNormalRedirectsChecks = () => libredditNormalRedirectsChecks;
-function setLibredditNormalRedirectsChecks(val) {
-  libredditNormalRedirectsChecks = val;
-  browser.storage.local.set({ libredditNormalRedirectsChecks })
-  console.log("libredditNormalRedirectsChecks: ", val)
-}
-
 let libredditTorRedirectsChecks;
-const getLibredditTorRedirectsChecks = () => libredditTorRedirectsChecks;
-function setLibredditTorRedirectsChecks(val) {
-  libredditTorRedirectsChecks = val;
-  browser.storage.local.set({ libredditTorRedirectsChecks })
-  console.log("libredditTorRedirectsChecks: ", val)
-}
-
 let libredditNormalCustomRedirects = [];
-const getLibredditNormalCustomRedirects = () => libredditNormalCustomRedirects;
-function setLibredditNormalCustomRedirects(val) {
-  libredditNormalCustomRedirects = val;
-  browser.storage.local.set({ libredditNormalCustomRedirects })
-  console.log("libredditNormalCustomRedirects: ", val)
-}
-
 let libredditTorCustomRedirects = [];
-const getLibredditTorCustomRedirects = () => libredditTorCustomRedirects;
-function setLibredditTorCustomRedirects(val) {
-  libredditTorCustomRedirects = val;
-  browser.storage.local.set({ libredditTorCustomRedirects })
-  console.log("libredditTorCustomRedirects: ", val)
-}
 
 let tedditNormalRedirectsChecks;
-const getTedditNormalRedirectsChecks = () => tedditNormalRedirectsChecks;
-function setTedditNormalRedirectsChecks(val) {
-  tedditNormalRedirectsChecks = val;
-  browser.storage.local.set({ tedditNormalRedirectsChecks })
-  console.log("tedditNormalRedirectsChecks: ", val)
-}
-
 let tedditTorRedirectsChecks;
-const getTedditTorRedirectsChecks = () => tedditTorRedirectsChecks;
-function setTedditTorRedirectsChecks(val) {
-  tedditTorRedirectsChecks = val;
-  browser.storage.local.set({ tedditTorRedirectsChecks })
-  console.log("tedditTorRedirectsChecks: ", val)
-}
-
 let tedditNormalCustomRedirects = [];
-const getTedditNormalCustomRedirects = () => tedditNormalCustomRedirects;
-function setTedditNormalCustomRedirects(val) {
-  tedditNormalCustomRedirects = val;
-  browser.storage.local.set({ tedditNormalCustomRedirects })
-  console.log("tedditNormalCustomRedirects: ", val)
-}
-
 let tedditTorCustomRedirects = [];
-const getTedditTorCustomRedirects = () => tedditTorCustomRedirects;
-function setTedditTorCustomRedirects(val) {
-  tedditTorCustomRedirects = val;
-  browser.storage.local.set({ tedditTorCustomRedirects })
-  console.log("tedditTorCustomRedirects: ", val)
-}
 
 const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
 
@@ -145,54 +91,49 @@ let frontend;
 let protocol;
 let bypassWatchOnReddit;
 
-let enableCustom;
-
-let theme;
-let front_page;
-let layout;
-let wide;
-let post_sort;
-let comment_sort;
-let show_nsfw;
-let autoplay_videos;
-let use_hls;
-let hide_hls_notification;
-
-function initLibredditCookies() {
-  if (enableCustom) {
-    let checkedInstances;
-    if (protocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
-    else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
-
-    for (const instance of checkedInstances) {
-      browser.cookies.set({ url: instance, name: "theme", value: theme })
-      browser.cookies.set({ url: instance, name: "front_page", value: front_page })
-      browser.cookies.set({ url: instance, name: "layout", value: layout })
-      browser.cookies.set({ url: instance, name: "wide", value: wide ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "post_sort", value: post_sort })
-      browser.cookies.set({ url: instance, name: "comment_sort", value: comment_sort })
-      browser.cookies.set({ url: instance, name: "show_nsfw", value: show_nsfw ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "autoplay_videos", value: autoplay_videos ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "use_hls", value: use_hls ? 'on' : 'off' })
-      browser.cookies.set({ url: instance, name: "hide_hls_notification", value: hide_hls_notification ? 'on' : 'off' })
+function initLibredditCookies(targetUrl) {
+  browser.storage.local.get(
+    [
+      "redditProtocol",
+      "libredditNormalRedirectsChecks",
+      "libredditNormalCustomRedirects",
+      "libredditTorRedirectsChecks",
+      "libredditTorCustomRedirects",
+    ],
+    r => {
+      let checkedInstances;
+      if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
+      else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
+
+      for (const instance of checkedInstances) {
+        commonHelper.copyCookie(targetUrl, instance, "theme");
+        commonHelper.copyCookie(targetUrl, instance, "front_page");
+        commonHelper.copyCookie(targetUrl, instance, "layout");
+        commonHelper.copyCookie(targetUrl, instance, "wide");
+        commonHelper.copyCookie(targetUrl, instance, "post_sort");
+        commonHelper.copyCookie(targetUrl, instance, "comment_sort");
+        commonHelper.copyCookie(targetUrl, instance, "show_nsfw");
+        commonHelper.copyCookie(targetUrl, instance, "autoplay_videos");
+        commonHelper.copyCookie(targetUrl, instance, "use_hls");
+        commonHelper.copyCookie(targetUrl, instance, "hide_hls_notification");
+      }
     }
-  }
+  )
 }
+
 function initTedditCookies() {
-  if (enableCustom) {
-    let checkedInstances = [
-      ...tedditNormalRedirectsChecks,
-      ...tedditNormalCustomRedirects,
-      ...tedditTorRedirectsChecks,
-      ...tedditTorCustomRedirects
-    ]
-    for (const instanceUrl of checkedInstances)
-      browser.cookies.set({
-        url: instanceUrl,
-        name: "theme",
-        value: theme == 'dark' ? 'dark' : 'white'
-      })
-  }
+  let checkedInstances = [
+    ...tedditNormalRedirectsChecks,
+    ...tedditNormalCustomRedirects,
+    ...tedditTorRedirectsChecks,
+    ...tedditTorCustomRedirects
+  ]
+  for (const instanceUrl of checkedInstances)
+    browser.cookies.set({
+      url: instanceUrl,
+      name: "theme",
+      value: theme == 'dark' ? 'dark' : 'white'
+    })
 }
 
 let alwaysUsePreferred;
@@ -336,54 +277,76 @@ function reverse(url) {
     return `https://reddit.com${url.pathname}${url.search}`;
 }
 
-function switchInstance(url) {
-  let protocolHost = commonHelper.protocolHost(url);
-
-  let isTeddit = [
-    ...redirects.teddit.normal,
-    ...redirects.teddit.tor
-  ].includes(protocolHost);
-
-  let isLibreddit = [
-    ...redirects.libreddit.normal,
-    ...redirects.libreddit.tor
-  ].includes(protocolHost);
-
-  let redditList = [
-    ...redirects.libreddit.normal,
-    ...redirects.libreddit.tor,
-
-    ...libredditNormalCustomRedirects,
-    ...libredditTorCustomRedirects,
-
-    ...redirects.teddit.normal,
-    ...redirects.teddit.tor,
-
-    ...tedditNormalCustomRedirects,
-    ...tedditTorCustomRedirects,
-  ]
-
-  if (!redditList.includes(protocolHost)) return null;
-
-  let instancesList;
-  if (frontend == 'libreddit') {
-    if (protocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
-    else if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
-    if (isTeddit) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
-  }
-  else if (frontend == 'teddit') {
-    if (protocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
-    else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
-    if (isLibreddit) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
-  }
+async function switchInstance(url) {
+  return new Promise(resolve => {
+    browser.storage.local.get(
+      [
+        "redditRedirects",
+        "redditFrontend",
+        "redditProtocol",
 
-  let index = instancesList.indexOf(protocolHost);
-  if (index > -1) instancesList.splice(index, 1);
-  if (instancesList.length === 0) return null;
+        "libredditNormalRedirectsChecks",
+        "libredditNormalCustomRedirects",
+        "libredditTorRedirectsChecks",
+        "libredditTorCustomRedirects",
 
-  let randomInstance = commonHelper.getRandomInstance(instancesList);
+        "tedditNormalRedirectsChecks",
+        "tedditNormalCustomRedirects",
+        "tedditTorRedirectsChecks",
+        "tedditTorCustomRedirects",
+      ],
+      r => {
+        let protocolHost = commonHelper.protocolHost(url);
+        let isTeddit = [
+          ...r.redditRedirects.teddit.normal,
+          ...r.redditRedirects.teddit.tor
+        ].includes(protocolHost);
+
+        let isLibreddit = [
+          ...r.redditRedirects.libreddit.normal,
+          ...r.redditRedirects.libreddit.tor
+        ].includes(protocolHost);
+
+        let redditList = [
+          ...r.redditRedirects.libreddit.normal,
+          ...r.redditRedirects.libreddit.tor,
+
+          ...r.libredditNormalCustomRedirects,
+          ...r.libredditTorCustomRedirects,
+
+          ...r.redditRedirects.teddit.normal,
+          ...r.redditRedirects.teddit.tor,
+
+          ...r.tedditNormalCustomRedirects,
+          ...r.tedditTorCustomRedirects,
+        ]
+
+        if (!redditList.includes(protocolHost)) return null;
+
+        console.log('redditFrontend', r.redditFrontend)
+        let instancesList;
+        if (r.redditFrontend == 'libreddit') {
+          if (r.redditProtocol == 'normal') instancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects];
+          else if (r.redditProtocol == 'tor') instancesList = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects];
+          if (isTeddit) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
+        }
+        else if (r.redditFrontend == 'teddit') {
+          if (r.redditProtocol == 'normal') instancesList = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects];
+          else if (r.redditProtocol == 'tor') instancesList = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects];
+          if (isLibreddit) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
+        }
+
+        let index = instancesList.indexOf(protocolHost);
+        if (index > -1) instancesList.splice(index, 1);
+        if (instancesList.length === 0) return;
+
+        let randomInstance = commonHelper.getRandomInstance(instancesList);
+
+        resolve(`${randomInstance}${url.pathname}${url.search}`)
+      }
+    )
+  })
 
-  return `${randomInstance}${url.pathname}${url.search}`;
 }
 
 async function initDefaults() {
@@ -396,7 +359,7 @@ async function initDefaults() {
       tedditNormalRedirectsChecks = [...redirects.teddit.normal]
       for (const instance of r.cloudflareList) {
         let i;
-        
+
         i = libredditNormalRedirectsChecks.indexOf(instance);
         if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
 
@@ -459,7 +422,6 @@ async function init() {
         "tedditTorRedirectsChecks",
         "tedditTorCustomRedirects",
 
-
         "redditProtocol",
         "bypassWatchOnReddit",
 
@@ -499,19 +461,6 @@ async function init() {
         tedditTorRedirectsChecks = r.tedditTorRedirectsChecks;
         tedditTorCustomRedirects = r.tedditTorCustomRedirects;
 
-        enableCustom = r.enableLibredditCustomSettings;
-
-        theme = r.redditTheme;
-        front_page = r.redditFrontPage;
-        layout = r.redditLayout;
-        wide = r.redditWide;
-        post_sort = r.redditPostSort;
-        comment_sort = r.redditCommentSort;
-        show_nsfw = r.redditShowNsfw;
-        autoplay_videos = r.redditAutoplayVideos;
-        use_hls = r.redditUseHls;
-        hide_hls_notification = r.redditHideHlsNotification;
-
         resolve();
       }
     );
@@ -531,26 +480,6 @@ export default {
   initLibredditCookies,
   initTedditCookies,
 
-  getLibredditNormalRedirectsChecks,
-  setLibredditNormalRedirectsChecks,
-  getLibredditTorRedirectsChecks,
-  setLibredditTorRedirectsChecks,
-
-  getLibredditNormalCustomRedirects,
-  setLibredditNormalCustomRedirects,
-  getLibredditTorCustomRedirects,
-  setLibredditTorCustomRedirects,
-
-  getTedditNormalRedirectsChecks,
-  setTedditNormalRedirectsChecks,
-  getTedditTorRedirectsChecks,
-  setTedditTorRedirectsChecks,
-
-  getTedditNormalCustomRedirects,
-  setTedditNormalCustomRedirects,
-  getTedditTorCustomRedirects,
-  setTedditTorCustomRedirects,
-
   initLibredditCookies,
 
   redirect,