about summary refs log tree commit diff stats
path: root/src/assets/javascripts/helpers
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-12 12:30:30 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-12 12:30:34 +0300
commit9b7389858424a8b2d99dba03d0f7b813c7b35b3d (patch)
tree129b3717f5e421587429fd4ccbd5451a47bb2728 /src/assets/javascripts/helpers
parentFixed bugs. Added icons (diff)
downloadlibredirect-9b7389858424a8b2d99dba03d0f7b813c7b35b3d.zip
Added redirecting feature #6, will improve it
Diffstat (limited to 'src/assets/javascripts/helpers')
-rw-r--r--src/assets/javascripts/helpers/common.js32
-rw-r--r--src/assets/javascripts/helpers/imgur.js10
-rw-r--r--src/assets/javascripts/helpers/instagram.js8
-rw-r--r--src/assets/javascripts/helpers/medium.js8
-rw-r--r--src/assets/javascripts/helpers/reddit.js11
-rw-r--r--src/assets/javascripts/helpers/search.js11
-rw-r--r--src/assets/javascripts/helpers/tiktok.js9
-rw-r--r--src/assets/javascripts/helpers/translate.js11
-rw-r--r--src/assets/javascripts/helpers/twitter.js18
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js18
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js12
11 files changed, 134 insertions, 14 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 82d70e2e..74f8edf5 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -14,6 +14,28 @@ function getRandomInstance(instances) {
   return instances[~~(instances.length * Math.random())];
 }
 
+async function getRandomOnlineInstance(instances) {
+  const shuffledInstances = instances.sort((a, b) => 0.5 - Math.random())
+
+  for (let ins of shuffledInstances) {
+    try {
+      const res = await fetch(ins, { redirect: 'follow' })
+      console.log(res)
+      if (res.status >= 200 && res.status < 300)
+        return ins // instance seems healthy!
+      else
+        console.warn(`Instance ${ins} seems offline (status code: ${res.status}). we try another one`)
+
+    } catch (err) {
+      console.warn(`Instance ${ins} seems offline. we try another one`)
+    }
+  }
+
+  // everything offline? -> unlikely
+  // rather respond with any entry instead of breaking the functionality
+  return shuffledInstances[0]
+}
+
 async function wholeInit() {
   await youtubeHelper.init();
   await twitterHelper.init();
@@ -150,10 +172,11 @@ function processDefaultCustomInstances(
   document.getElementById(`custom-${name}-instance-form`).addEventListener("submit", (event) => {
     event.preventDefault();
     let nameCustomInstanceInput = document.getElementById(`${name}-custom-instance`);
-    let val = nameCustomInstanceInput.value
-    if (nameCustomInstanceInput.validity.valid && !nameHelper.getRedirects()[name].normal.includes(val) && val.trim() != '') {
-      if (!nameCustomInstances.includes(val)) {
-        nameCustomInstances.push(val)
+    let url = new URL(nameCustomInstanceInput.value);
+    let protocolHost = `${url.protocol}//${url.host}`;
+    if (nameCustomInstanceInput.validity.valid && !nameHelper.getRedirects()[name].normal.includes(protocolHost)) {
+      if (!nameCustomInstances.includes(protocolHost)) {
+        nameCustomInstances.push(protocolHost)
         setNameCustomRedirects(nameCustomInstances);
         nameCustomInstanceInput.value = '';
       }
@@ -164,6 +187,7 @@ function processDefaultCustomInstances(
 
 export default {
   getRandomInstance,
+  getRandomOnlineInstance,
   updateInstances,
   isFirefox,
   processDefaultCustomInstances,
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
index 3f5f9450..437739df 100644
--- a/src/assets/javascripts/helpers/imgur.js
+++ b/src/assets/javascripts/helpers/imgur.js
@@ -22,6 +22,15 @@ let redirects = {
 }
 
 const getRedirects = () => redirects;
+
+const getCustomRedirects = function () {
+    return {
+        "rimgo": {
+            "normal": [...rimgoRedirectsChecks, ...rimgoCustomRedirects]
+        },
+    };
+};
+
 function setRedirects(val) {
     redirects.rimgo = val;
     browser.storage.sync.set({ imgurRedirects: redirects })
@@ -102,6 +111,7 @@ export default {
     targets,
 
     getRedirects,
+    getCustomRedirects,
     setRedirects,
 
     getDisableImgur,
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index dc28990a..51495dc0 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -22,6 +22,13 @@ let redirects = {
   }
 };
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "bibliogram": {
+      "normal": [...bibliogramRedirectsChecks, ...bibliogramCustomRedirects]
+    },
+  };
+};
 function setRedirects(val) {
   redirects.bibliogram = val;
   browser.storage.sync.set({ instagramRedirects: redirects })
@@ -128,6 +135,7 @@ async function init() {
 
 export default {
   getRedirects,
+  getCustomRedirects,
   setRedirects,
 
   getDisableInstagram,
diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js
index 348313bb..60aa6b61 100644
--- a/src/assets/javascripts/helpers/medium.js
+++ b/src/assets/javascripts/helpers/medium.js
@@ -28,6 +28,13 @@ let redirects = {
   }
 };
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "scribe": {
+      "normal": [...scribeRedirectsChecks, ...scribeCustomRedirects]
+    },
+  };
+};
 function setRedirects(val) {
   redirects.scribe = val;
   browser.storage.sync.set({ mediumRedirects: redirects })
@@ -111,6 +118,7 @@ export default {
   targets,
 
   getRedirects,
+  getCustomRedirects,
   setRedirects,
 
   getDisableMedium,
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 0c8d635d..740bb998 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -58,6 +58,16 @@ let redirects = {
   "mobile": "https://i.reddit.com", // mobile
 };
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "libreddit": {
+      "normal": [...libredditRedirectsChecks, ...libredditCustomRedirects]
+    },
+    "teddit": {
+      "normal": [...tedditRedirectsChecks, ...tedditCustomRedirects]
+    }
+  };
+};
 
 function setLibredditRedirects(val) {
   redirects.libreddit = val;
@@ -206,6 +216,7 @@ async function init() {
 export default {
   targets,
   getRedirects,
+  getCustomRedirects,
   setTedditRedirects,
   setLibredditRedirects,
 
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index c48a0edb..ed1063c7 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -134,6 +134,16 @@ let redirects = {
   },
 };
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "searx": {
+      "normal": [...searxRedirectsChecks, ...searxCustomRedirects]
+    },
+    "whoogle": {
+      "normal": [...whoogleRedirectsChecks, ...whoogleCustomRedirects]
+    }
+  };
+};
 
 function setSearxRedirects(val) {
   redirects.searx = val;
@@ -269,6 +279,7 @@ export default {
   isSearch,
 
   getRedirects,
+  getCustomRedirects,
   setSearxRedirects,
   setWhoogleRedirects,
 
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
index c2eb2fb6..5022db89 100644
--- a/src/assets/javascripts/helpers/tiktok.js
+++ b/src/assets/javascripts/helpers/tiktok.js
@@ -13,6 +13,14 @@ let redirects = {
 }
 
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+    return {
+        "proxiTok": {
+            "normal": [...proxiTokRedirectsChecks, ...proxiTokCustomRedirects]
+        },
+    };
+};
+
 function setRedirects(val) {
     redirects.proxiTok = val;
     browser.storage.sync.set({ tiktokRedirects: redirects })
@@ -90,6 +98,7 @@ export default {
     targets,
 
     getRedirects,
+    getCustomRedirects,
     setRedirects,
 
     getDisableTiktok,
diff --git a/src/assets/javascripts/helpers/translate.js b/src/assets/javascripts/helpers/translate.js
index 2f9b61db..074e0a64 100644
--- a/src/assets/javascripts/helpers/translate.js
+++ b/src/assets/javascripts/helpers/translate.js
@@ -37,6 +37,16 @@ let redirects = {
 };
 
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "simplyTranslate": {
+      "normal": [...simplyTranslateRedirectsChecks, ...simplyTranslateCustomRedirects]
+    },
+    "lingva": {
+      "normal": [...lingvaRedirectsChecks, ...lingvaCustomRedirects]
+    }
+  };
+};
 
 function setSimplyTranslateRedirects(val) {
   redirects.simplyTranslate = val;
@@ -174,6 +184,7 @@ async function init() {
 
 export default {
   getRedirects,
+  getCustomRedirects,
   setSimplyTranslateRedirects,
   setLingvaRedirects,
 
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index a56ceeb6..782c41a6 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -78,6 +78,13 @@ let redirects = {
   }
 };
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "nitter": {
+      "normal": [...nitterRedirectsChecks, ...nitterCustomRedirects]
+    },
+  };
+};
 function setRedirects(val) {
   redirects.nitter = val;
   browser.storage.sync.set({ twitterRedirects: redirects })
@@ -90,11 +97,11 @@ function setNitterRedirectsChecks(val) {
   nitterRedirectsChecks = val;
   browser.storage.sync.set({ nitterRedirectsChecks })
   for (const item of nitterRedirectsChecks)
-  if (!redirects.nitter.normal.includes(item)) {
-    var index = nitterRedirectsChecks.indexOf(item);
-    if (index !== -1) nitterRedirectsChecks.splice(index, 1);
-  }
-setNitterRedirectsChecks(nitterRedirectsChecks);
+    if (!redirects.nitter.normal.includes(item)) {
+      var index = nitterRedirectsChecks.indexOf(item);
+      if (index !== -1) nitterRedirectsChecks.splice(index, 1);
+    }
+  setNitterRedirectsChecks(nitterRedirectsChecks);
   console.log("nitterRedirectsChecks: ", val)
 }
 
@@ -166,6 +173,7 @@ async function init() {
 
 export default {
   getRedirects,
+  getCustomRedirects,
   setRedirects,
 
   getDisableTwitter,
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index a2d84d07..62a09e14 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -16,16 +16,23 @@ let redirects = {
   }
 };
 const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+  return {
+    "wikiless": {
+      "normal": [...wikilessRedirectsChecks, ...wikilessCustomRedirects]
+    },
+  };
+};
 function setRedirects(val) {
   redirects.wikiless = val;
   browser.storage.sync.set({ wikipediaRedirects: redirects })
   console.log("wikipediaRedirects: ", val)
   for (const item of wikilessRedirectsChecks)
-  if (!redirects.wikiless.normal.includes(item)) {
-    var index = wikilessRedirectsChecks.indexOf(item);
-    if (index !== -1) wikilessRedirectsChecks.splice(index, 1);
-  }
-setWikilessRedirectsChecks(wikilessRedirectsChecks);
+    if (!redirects.wikiless.normal.includes(item)) {
+      var index = wikilessRedirectsChecks.indexOf(item);
+      if (index !== -1) wikilessRedirectsChecks.splice(index, 1);
+    }
+  setWikilessRedirectsChecks(wikilessRedirectsChecks);
 }
 
 let disableWikipedia;
@@ -115,6 +122,7 @@ async function init() {
 
 export default {
   getRedirects,
+  getCustomRedirects,
   setRedirects,
 
   setDisableWikipedia,
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 8e5f2ea7..be20b726 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -54,6 +54,17 @@ let redirects = {
 
 const getRedirects = () => redirects;
 
+const getCustomRedirects = function () {
+  return {
+    "invidious": {
+      "normal": [...invidiousRedirectsChecks, ...invidiousCustomRedirects]
+    },
+    "piped": {
+      "normal": [...pipedRedirectsChecks, ...pipedCustomRedirects]
+    }
+  };
+};
+
 function setInvidiousRedirects(val) {
   redirects.invidious = val;
   browser.storage.sync.set({ youtubeRedirects: redirects })
@@ -320,6 +331,7 @@ export default {
   setFrontend,
 
   getRedirects,
+  getCustomRedirects,
   setInvidiousRedirects,
   setPipedRedirects,