about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-06 05:58:42 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-06 05:58:42 +0300
commit2876cb24b34e18470c297043c56e915aae2cea7c (patch)
tree6b3fbd29963e64451a40be22f74f1ddda21b1b3c
parentreadded default and custom instances. Needs some work (diff)
downloadlibredirect-2876cb24b34e18470c297043c56e915aae2cea7c.zip
Cleaning code
-rw-r--r--src/assets/javascripts/data.js8
-rw-r--r--src/assets/javascripts/helpers/common.js65
-rw-r--r--src/assets/javascripts/helpers/instagram.js26
-rw-r--r--src/assets/javascripts/helpers/maps.js17
-rw-r--r--src/assets/javascripts/helpers/medium.js20
-rw-r--r--src/assets/javascripts/helpers/reddit.js15
-rw-r--r--src/assets/javascripts/helpers/search.js19
-rw-r--r--src/assets/javascripts/helpers/translate.js21
-rw-r--r--src/assets/javascripts/helpers/twitter.js23
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js16
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js19
-rw-r--r--src/pages/options/general/general.html59
-rw-r--r--src/pages/options/general/general.js25
-rw-r--r--src/pages/options/instagram/instagram.html16
-rw-r--r--src/pages/options/medium/medium.html15
-rw-r--r--src/pages/options/reddit/reddit.html17
-rw-r--r--src/pages/options/search/search.html17
-rw-r--r--src/pages/options/twitter/twitter.html16
-rw-r--r--src/pages/options/wikipedia/wikipedia.html14
-rw-r--r--src/pages/options/youtube/youtube.html21
-rw-r--r--src/pages/options/youtube/youtube.js75
-rw-r--r--src/pages/stylesheets/styles.css177
22 files changed, 58 insertions, 643 deletions
diff --git a/src/assets/javascripts/data.js b/src/assets/javascripts/data.js
index fad2ea9d..a4e37ca7 100644
--- a/src/assets/javascripts/data.js
+++ b/src/assets/javascripts/data.js
@@ -1,12 +1,5 @@
 "use strict";
 
-let exceptions;
-
-function setExceptions(val) {
-    exceptions = val;
-    browser.storage.sync.set({ exceptions })
-};
-
 let theme;
 function setTheme(val) {
     theme = val;
@@ -17,5 +10,4 @@ export default {
     exceptions,
     theme,
     setTheme,
-    setExceptions,
 }
\ No newline at end of file
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 373929f6..313808a9 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -10,11 +10,6 @@ import wikipediaHelper from "./wikipedia.js";
 import mapsHelper from "./maps.js";
 import medium from "./medium.js";
 
-
-function addHttps(instances) {
-  return instances.map((item, i) => "https://" + item)
-}
-
 function getRandomInstance(instances) {
   return instances[~~(instances.length * Math.random())];
 }
@@ -51,72 +46,12 @@ function updateInstances() {
   return false;
 }
 
-function debounce(func, wait, immediate) {
-  let timeout;
-  return () => {
-    let context = this,
-      args = arguments;
-    let later = () => {
-      timeout = null;
-      if (!immediate) func.apply(context, args);
-    };
-    let callNow = immediate && !timeout;
-    clearTimeout(timeout);
-    timeout = setTimeout(later, wait);
-    if (callNow) func.apply(context, args);
-  };
-}
-
-function validURL(str) {
-  var pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
-    '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
-    '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
-    '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
-    '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
-    '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator
-  return !!pattern.test(str);
-}
-
-function filterList(oldList) {
-  oldList.filter((x) => x.trim() != "");
-  let newList = [];
-  oldList.forEach((c) => {
-    if (!newList.includes(c.trim()))
-      newList.push(c.trim());
-  });
-  newList = newList.filter(validURL)
-  return newList;
-}
-
-function updateListElement(listElement, list) {
-  while (listElement.firstChild)
-    listElement.removeChild(listElement.firstChild);
-  list.forEach(element => {
-    let entry = document.createElement('li');
-    entry.appendChild(document.createTextNode(element));
-    listElement.appendChild(entry);
-  });
-}
-
 function isFirefox() {
   return typeof InstallTrigger !== "undefined";
 }
 
-function isException(url, initiator) {
-  return (
-    data.exceptions.some((regex) => regex.test(url.href)) ||
-    (initiator && data.exceptions.some((regex) => regex.test(initiator.href)))
-  );
-}
-
 export default {
   getRandomInstance,
   updateInstances,
-  addHttps,
-  debounce,
-  validURL,
-  filterList,
-  updateListElement,
   isFirefox,
-  isException,
 };
diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js
index 666b9f71..fac1f534 100644
--- a/src/assets/javascripts/helpers/instagram.js
+++ b/src/assets/javascripts/helpers/instagram.js
@@ -60,37 +60,23 @@ function setDisableInstagram(val) {
   browser.storage.sync.set({ disableInstagram })
 }
 
-let bibliogramInstance;
-const getBibliogramInstance = () => bibliogramInstance;
-function setBibliogramInstance(val) {
-  bibliogramInstance = val;
-  browser.storage.sync.set({ bibliogramInstance })
-};
-
 function redirect(url, initiator, type) {
   if (disableInstagram)
     return null;
 
   // Do not redirect Bibliogram view on Instagram links
-  if (
-    initiator &&
-    (initiator.origin === bibliogramInstance || redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
-  )
+  if (initiator && (redirects.normal.includes(initiator.origin) || targets.includes(initiator.host)))
     return null;
 
   // Do not redirect /accounts, /embeds.js, or anything other than main_frame
   if (type !== "main_frame" || url.pathname.match(bypassPaths))
-    return null;
+    return 'CANCEL';
 
   let link = commonHelper.getRandomInstance(redirects.normal);
-  if (
-    url.pathname === "/" ||
-    instagramReservedPaths.includes(url.pathname.split("/")[1])
-  )
+  if (url.pathname === "/" || instagramReservedPaths.includes(url.pathname.split("/")[1]))
     return `${link}${url.pathname}${url.search}`;
   else
-    // Likely a user profile, redirect to '/u/...'
-    return `${link}/u${url.pathname}${url.search}`;
+    return `${link}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
 }
 
 function isInstagram(url) {
@@ -100,11 +86,9 @@ function isInstagram(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableInstagram",
-    "bibliogramInstance",
     "instagramRedirects"
   ])
   disableInstagram = result.disableInstagram ?? false;
-  bibliogramInstance = result.bibliogramInstance;
   if (result.instagramRedirects)
     redirects = result.instagramRedirects
 }
@@ -114,8 +98,6 @@ export default {
   setRedirects,
   getDisableInstagram,
   setDisableInstagram,
-  getBibliogramInstance,
-  setBibliogramInstance,
   isInstagram,
   redirect,
   init,
diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js
index 40f070c2..cee15557 100644
--- a/src/assets/javascripts/helpers/maps.js
+++ b/src/assets/javascripts/helpers/maps.js
@@ -54,13 +54,6 @@ function setDisableMaps(val) {
   browser.storage.sync.set({ disableMaps })
 }
 
-let osmInstance;
-const getOsmInstance = () => osmInstance;
-function setOsmInstance(val) {
-  osmInstance = val;
-  browser.storage.sync.set({ osmInstance })
-}
-
 function redirect(url, initiator) {
   if (disableMaps) return null;
 
@@ -82,8 +75,7 @@ function redirect(url, initiator) {
     params = "&zoom=17";
 
   // Set map layer
-  params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"]
-    }`;
+  params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"]}`;
   // Handle Google Maps Embed API
   if (url.pathname.split("/").includes("embed")) {
     let query = "";
@@ -93,8 +85,7 @@ function redirect(url, initiator) {
       try {
         query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1];
       } catch (error) {
-        console.error(error);
-        // Unable to find map marker in URL.
+        console.error(error); // Unable to find map marker in URL.
       }
     }
     let marker, bbox;
@@ -145,18 +136,14 @@ function isMaps(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableMaps",
-    "osmInstance",
   ])
   disableMaps = result.disableMaps ?? false;
-  osmInstance = result.osmInstance;
 }
 
 export default {
   addressToLatLng,
   getDisableMaps,
   setDisableMaps,
-  getOsmInstance,
-  setOsmInstance,
   redirect,
   isMaps,
   init,
diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js
index ce91e99c..16a6eac5 100644
--- a/src/assets/javascripts/helpers/medium.js
+++ b/src/assets/javascripts/helpers/medium.js
@@ -39,12 +39,6 @@ function setDisableMedium(val) {
 }
 
 
-let scribeInstance;
-const getScribeInstance = () => scribeInstance;
-function setScribeInstance(val) {
-  scribeInstance = val;
-  browser.storage.sync.set({ scribeInstance })
-};
 
 function redirect(url, initiator) {
   if (disableMedium) return null;
@@ -52,13 +46,8 @@ function redirect(url, initiator) {
   if (url.pathname == "/") return null;
 
   if (
-    commonHelper.isFirefox() &&
-    initiator &&
-    (
-      initiator.origin === scribeInstance ||
-      redirects.normal.includes(initiator.origin) ||
-      targets.includes(initiator.host)
-    )
+    commonHelper.isFirefox() && initiator &&
+    (redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
   ) {
     browser.storage.sync.set({ redirectBypassFlag: true });
     return null;
@@ -73,11 +62,9 @@ function isMedium(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableMedium",
-    "scribeInstance",
     "mediumRedirects"
   ])
   disableMedium = result.disableMedium ?? false;
-  scribeInstance = result.scribeInstance;
   if (result.mediumRedirects)
     redirects = result.mediumRedirects;
 }
@@ -91,9 +78,6 @@ export default {
   getDisableMedium,
   setDisableMedium,
 
-  getScribeInstance,
-  setScribeInstance,
-
   redirect,
   isMedium,
   init,
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index 880d1576..ba3455d0 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -79,12 +79,6 @@ function setDisableReddit(val) {
   disableReddit = val;
   browser.storage.sync.set({ disableReddit })
 }
-let redditInstance;
-const getRedditInstance = () => redditInstance;
-function setRedditInstance(val) {
-  redditInstance = val;
-  browser.storage.sync.set({ redditInstance })
-};
 
 let redditFrontend;
 const getRedditFrontend = () => redditFrontend;
@@ -99,8 +93,8 @@ function redirect(url, initiator, type) {
     return null;
 
   // Do not redirect when already on the selected view
-  if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance)
-    return null;
+  // if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance)
+  //   return null;
 
 
   // Do not redirect exclusions nor anything other than main_frame
@@ -140,12 +134,10 @@ function isReddit(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableReddit",
-    "redditInstance",
     "redditFrontend",
     "redditRedirects"
   ])
   disableReddit = result.disableReddit ?? false;
-  redditInstance = result.redditInstance;
   redditFrontend = result.redditFrontend ?? 'libreddit';
   if (result.redditRedirects)
     redirects = result.redditRedirects;
@@ -160,9 +152,6 @@ export default {
   getDisableReddit,
   setDisableReddit,
 
-  getRedditInstance,
-  setRedditInstance,
-
   getRedditFrontend,
   setRedditFrontend,
 
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index 84b63f9a..1130aa3e 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -6,7 +6,7 @@ const targets = [
   /https?:\/\/(((www|maps)\.)?(google\.).*(\/search)|search\.(google\.).*)/
 ];
 let redirects = {
-    "searx": {
+  "searx": {
     "normal": [
       "https://a.searx.space",
       "https://anon.sx",
@@ -137,7 +137,7 @@ let redirects = {
       "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
     ]
   },
- "whoogle": {
+  "whoogle": {
     "normal": [
       "https://s.alefvanoon.xyz",
       "https://search.albony.xyz",
@@ -164,8 +164,6 @@ function setWhoogleRedirects(val) {
   console.log("whoogleRedirects:", val)
 }
 
-
-
 let disableSearch;
 const getDisableSearch = () => disableSearch;
 function setDisableSearch(val) {
@@ -174,13 +172,6 @@ function setDisableSearch(val) {
   console.log("disableSearch: ", disableSearch)
 }
 
-let searchInstance;
-const getSearchInstance = () => searchInstance;
-function setSearchInstance(val) {
-  searchInstance = val;
-  browser.storage.sync.set({ searchInstance })
-};
-
 let searchFrontend;
 const getSearchFrontend = () => searchFrontend;
 function setSearchFrontend(val) {
@@ -208,7 +199,6 @@ function redirect(url, initiator) {
   url.search.slice(1).split("&").forEach(function (input) {
     if (input.startsWith("q=")) searchQuery = input;
   });
-  console.log("Will return");
   return `${instance}${path}?${searchQuery}`;
 }
 
@@ -219,12 +209,10 @@ function isSearch(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableSearch",
-    "searchInstance",
     "searchFrontend",
     "searchRedirects",
   ])
   disableSearch = result.disableSearch ?? false;
-  searchInstance = result.searchInstance;
   searchFrontend = result.searchFrontend ?? 'searx';
   if (result.searchRedirects)
     redirects = result.searchRedirects;
@@ -241,9 +229,6 @@ export default {
   getDisableSearch,
   setDisableSearch,
 
-  getSearchInstance,
-  setSearchInstance,
-
   getSearchFrontend,
   setSearchFrontend,
 
diff --git a/src/assets/javascripts/helpers/translate.js b/src/assets/javascripts/helpers/translate.js
index 198603e9..c0f95994 100644
--- a/src/assets/javascripts/helpers/translate.js
+++ b/src/assets/javascripts/helpers/translate.js
@@ -35,6 +35,7 @@ let redirects = {
   }
 
 };
+
 const getRedirects = () => redirects;
 
 function setSimplyTranslateRedirects(val) {
@@ -57,13 +58,6 @@ function setDisableTranslate(val) {
   console.log("disableTranslate: ", disableTranslate)
 }
 
-let simplyTranslateInstance;
-const getSimplyTranslateInstance = () => simplyTranslateInstance;
-function setSimplyTranslateInstance(val) {
-  simplyTranslateInstance = val;
-  browser.storage.sync.set({ simplyTranslateInstance })
-};
-
 let translateFrontend;
 const getFrontend = () => translateFrontend;
 function setFrontend(val) {
@@ -108,12 +102,10 @@ function isTranslate(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableTranslate",
-    "simplyTranslateInstance",
     "translateFrontend",
     "translateRedirects"
   ]);
   disableTranslate = result.disableTranslate ?? false;
-  simplyTranslateInstance = result.simplyTranslateInstance;
   translateFrontend = result.translateFrontend ?? "simplyTransalte";
   if (result.translateRedirects)
     redirects = result.translateRedirects
@@ -123,18 +115,15 @@ export default {
   getRedirects,
   setSimplyTranslateRedirects,
   setLingvaRedirects,
-  
+
   isTranslate,
-  
+
   getDisableTranslate,
   setDisableTranslate,
-  
-  getSimplyTranslateInstance,
-  setSimplyTranslateInstance,
-  
+
   getFrontend,
   setFrontend,
-  
+
   redirect,
   init,
 };
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 24d2725e..d97505cc 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -12,11 +12,7 @@ const targets = [
   "pbs.twimg.com",
   "video.twimg.com",
 ];
-/*
-    Please remember to also update the 
-    src/assets/javascripts/remove-twitter-sw.js file 
-    (const nitterInstances) when updating this list:
-  */
+
 let redirects = {
   "normal": [
     "https://nitter.net",
@@ -93,12 +89,6 @@ function setDisableTwitter(val) {
   browser.storage.sync.set({ disableTwitter })
 }
 
-let nitterInstance;
-const getNitterInstance = () => nitterInstance;
-function setNitterInstance(val) {
-  nitterInstance = val;
-  browser.storage.sync.set({ nitterInstance })
-}
 
 function redirect(url, initiator) {
   if (disableTwitter)
@@ -110,11 +100,7 @@ function redirect(url, initiator) {
   if (
     commonHelper.isFirefox() &&
     initiator &&
-    (
-      initiator.origin === nitterInstance ||
-      redirects.normal.includes(initiator.origin) ||
-      targets.includes(initiator.host)
-    )
+    (redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
   ) {
     browser.storage.sync.set({ redirectBypassFlag: true });
     return null;
@@ -138,11 +124,9 @@ function isTwitter(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableTwitter",
-    "nitterInstance",
     "twitterRedirects"
   ]);
   disableTwitter = result.disableTwitter ?? false;
-  nitterInstance = result.nitterInstance;
   if (result.twitterRedirects)
     redirects = result.twitterRedirects;
 }
@@ -154,9 +138,6 @@ export default {
   getDisableTwitter,
   setDisableTwitter,
 
-  getNitterInstance,
-  setNitterInstance,
-
   redirect,
   isTwitter,
   init,
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index e730c8b8..111eee2c 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -27,13 +27,6 @@ function setDisableWikipedia(val) {
   browser.storage.sync.set({ disableWikipedia })
 }
 
-let wikipediaInstance;
-const getWikipediaInstance = () => wikipediaInstance;
-function setWikipediaInstance(val) {
-  wikipediaInstance = val;
-  browser.storage.sync.set({ wikipediaInstance })
-};
-
 function redirect(url, initiator) {
   if (disableWikipedia) return null;
 
@@ -46,7 +39,7 @@ function redirect(url, initiator) {
       GETArguments.push([args[0], args[1]]);
     }
   }
-  let instance = wikipediaInstance ?? commonHelper.getRandomInstance(redirects.normal)
+  let instance = commonHelper.getRandomInstance(redirects.normal)
   let link = `${instance}${url.pathname}`;
   let urlSplit = url.host.split(".");
   if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
@@ -55,7 +48,7 @@ function redirect(url, initiator) {
     else GETArguments.push(["lang", urlSplit[0]]);
     if (urlSplit[1] == "m")
       GETArguments.push(["mobileaction", "toggle_view_mobile"]);
-    //wikiless doesn't have mobile view support yet
+    // wikiless doesn't have mobile view support yet
   }
   for (let i = 0; i < GETArguments.length; i++)
     link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
@@ -76,11 +69,9 @@ function isWikipedia(url) {
 async function init() {
   let result = await browser.storage.sync.get([
     "disableWikipedia",
-    "wikipediaInstance",
     "wikipediaRedirects"
   ]);
   disableWikipedia = result.disableWikipedia ?? false;
-  wikipediaInstance = result.wikipediaInstance;
   if (result.wikipediaRedirects)
     redirects = result.wikipediaRedirects;
 }
@@ -92,9 +83,6 @@ export default {
   setDisableWikipedia,
   getDisableWikipedia,
 
-  setWikipediaInstance,
-  getWikipediaInstance,
-
   redirect,
   isWikipedia,
   init,
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index 0ce6b097..b6588808 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -91,14 +91,6 @@ function setDisableYoutube(val) {
   console.log("disableYoutube: ", disableYoutube)
 }
 
-let invidiousInstance;
-const getInvidiousInstance = () => invidiousInstance;
-function setInvidiousInstance(val) {
-  invidiousInstance = val;
-  browser.storage.sync.set({ invidiousInstance })
-  console.log("invidiousInstance: ", invidiousInstance)
-}
-
 let invidiousAlwaysProxy;
 function setInvidiousAlwaysProxy(val) {
   invidiousAlwaysProxy = val;
@@ -208,7 +200,6 @@ async function init() {
       "invidiousTheme",
       "persistInvidiousPrefs",
       "disableYoutube",
-      "invidiousInstance",
       "invidiousOnlyEmbeddedVideo",
       "invidiousVolume",
       "invidiousPlayerStyle",
@@ -219,7 +210,7 @@ async function init() {
       "invidiousRedirectsChecks",
       "invidiousCustomRedirects",
     ]);
-  if (result.youtubeRedirects) redirects = result.youtubeRedirects
+  if (result.youtubeRedirects) redirects = result.youtubeRedirects;
 
   if (result.invidiousRedirectsChecks) invidiousRedirectsChecks = result.invidiousRedirectsChecks;
 
@@ -228,8 +219,6 @@ async function init() {
   frontend = result.youtubeFrontend ?? 'piped';
   disableYoutube = result.disableYoutube ?? false;
 
-  invidiousInstance = result.invidiousInstance;
-
   invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? 'DEFAULT';
   invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false;
   invidiousVideoQuality = result.invidiousVideoQuality ?? 'DEFAULT';
@@ -240,8 +229,6 @@ async function init() {
   invidiousAutoplay = result.invidiousAutoplay ?? 'DEFAULT';
 
   persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
-
-
 }
 
 function invidiousInitCookies(tabId) {
@@ -259,7 +246,6 @@ function redirect(url, initiator, type) {
   if (
     initiator &&
     (
-      initiator.origin === invidiousInstance ||
       redirects.invidious.normal.includes(initiator.origin) ||
       redirects.piped.normal.includes(initiator.origin) ||
       targets.includes(initiator.host)
@@ -326,9 +312,6 @@ export default {
   getDisableYoutube,
   setDisableYoutube,
 
-  setInvidiousInstance,
-  getInvidiousInstance,
-
   setInvidiousAlwaysProxy,
   getInvidiousAlwaysProxy,
 
diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html
index 3a7e8cf2..92cd48c5 100644
--- a/src/pages/options/general/general.html
+++ b/src/pages/options/general/general.html
@@ -38,65 +38,6 @@
         <span>Update Instances</span>
       </a>
     </div>
-    <!-- <hr> -->
-    <!-- <section class="settings-block">
-      <p data-localise="__MSG_exceptionsDescriptionP1__">
-        Enter a URL or Regular Expression to be excluded from redirects.
-      </p>
-      <p data-localise="__MSG_exceptionsDescriptionP2__">
-        All requests for or initiating from a URL that matches your exception
-        will be excluded from redirects.
-      </p>
-      <p data-localise="__MSG_exceptionsDescriptionP3__">
-        Note - Supports JavaScript regular expressions, excluding the
-        enclosing forward slashes.
-      </p>
-    </section>
-    <section class="settings-block">
-      <table class="exceptions option">
-        <tbody>
-          <tr>
-            <td>
-              <h1 data-localise="__MSG_addException__">Add Exception</h1>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <input id="new-exceptions-item" type="text" placeholder="URL or RegExp" />
-            </td>
-            <td>
-              <input type="radio" id="url" name="type" value="URL" checked />
-              <label class="radio" for="url">URL</label>
-              <input type="radio" id="regExp" name="type" value="RegExp" />
-              <label class="radio" for="regExp">RegExp</label>
-            </td>
-            <td>
-              <button id="add-to-exceptions">
-                <svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
-                  <line x1="256" y1="112" x2="256" y2="400" style="
-                        fill: none;
-                        stroke: #fff;
-                        stroke-linecap: round;
-                        stroke-linejoin: round;
-                        stroke-width: 32px;
-                      " />
-                  <line x1="400" y1="256" x2="112" y2="256" style="
-                        fill: none;
-                        stroke: #fff;
-                        stroke-linecap: round;
-                        stroke-linejoin: round;
-                        stroke-width: 32px;
-                      " />
-                </svg>
-              </button>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </section>
-    <ul id="exceptions-items"></ul>
-  </section> -->
-
 
   <script type="module" src="../init.js"></script>
   <script type="module" src="./general.js"></script>
diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js
index 23c739aa..17b7a843 100644
--- a/src/pages/options/general/general.js
+++ b/src/pages/options/general/general.js
@@ -47,31 +47,6 @@ browser.storage.sync.get(
   }
 );
 
-// function addToExceptions() {
-//   const input = document.getElementById("new-exceptions-item");
-//   const type = document.querySelector('input[name="type"]:checked').value;
-//   if (input.value) {
-//     try {
-//       let value = input.value;
-//       new RegExp(input.value);
-//       if (type === "URL")
-//         value = value.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
-
-//       exceptions.push(value);
-//       browser.storage.sync.set({
-//         exceptions: exceptions,
-//       });
-//       prependExceptionsItem(value, exceptions.indexOf(value));
-//       input.value = "";
-//     } catch (error) {
-//       input.setCustomValidity("Invalid RegExp");
-//     }
-//   } else {
-//     input.setCustomValidity("Invalid RegExp");
-//   }
-// }
-// document.getElementById("add-to-exceptions").addEventListener("click", addToExceptions);
-
 themeElement.addEventListener("change", (event) => {
   const value = event.target.options[theme.selectedIndex].value;
   switch (value) {
diff --git a/src/pages/options/instagram/instagram.html b/src/pages/options/instagram/instagram.html
index 1f09cab7..98e296f8 100644
--- a/src/pages/options/instagram/instagram.html
+++ b/src/pages/options/instagram/instagram.html
@@ -28,22 +28,6 @@
             <h4>Enable</h4>
             <input id="disable-bibliogram" type="checkbox" checked />
         </div>
-        <!-- <div class="some-block option-block">
-            <h4>Instance</h4>
-            <div class="autocomplete">
-                <input id="bibliogram-instance" type="url" data-localise-placeholder="__MSG_randomInstancePlaceholder__"
-                    placeholder="Random instance (none selected)" />
-            </div>
-        </div> -->
-
-        <!-- <section class="settings-block">
-            <h4>Instance List</h4>
-            <div class="random-pool">
-                <textarea id="bibliogram-random-pool" name="bibliogram-random-pool" type="text"></textarea>
-                <ul id="bibliogram-random-pool-list"></ul>
-            </div>
-        </section> -->
-
 
     </section>
     <script type="module" src="../init.js"></script>
diff --git a/src/pages/options/medium/medium.html b/src/pages/options/medium/medium.html
index abf149c0..1c978d82 100644
--- a/src/pages/options/medium/medium.html
+++ b/src/pages/options/medium/medium.html
@@ -28,21 +28,6 @@
             <h4>Enable</h4>
             <input id="disable-scribe" type="checkbox" checked />
         </div>
-        <!-- <div class="some-block option-block">
-            <h4>Instance</h4>
-            <div class="autocomplete">
-                <input id="scribe-instance" type="url" name="scribe-instance"
-                    data-localise-placeholder="__MSG_randomInstancePlaceholder__"
-                    placeholder="Random instance (none selected)" />
-            </div>
-        </div>
-        <section class="settings-block">
-            <h4>Instance List</h4>
-            <div class="random-pool">
-                <textarea id="scribe-random-pool" type="text"></textarea>
-                <ul id="scribe-random-pool-list"></ul>
-            </div>
-        </section> -->
     </section>
 
     <script type="module" src="../init.js"></script>
diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html
index 9dd59d73..c968b954 100644
--- a/src/pages/options/reddit/reddit.html
+++ b/src/pages/options/reddit/reddit.html
@@ -45,23 +45,6 @@
                 <option value="teddit">Teddit</option>
             </select>
         </div>
-
-        <!-- <section class="settings-block">
-            <h4>LibReddit Instance List</h4>
-            <div class="random-pool">
-                <textarea id="libreddit-random-pool" type="text"></textarea>
-                <ul id="libreddit-random-pool-list"></ul>
-            </div>
-        </section>
-
-        <section class="settings-block">
-            <h4>Teddit Instance List</h4>
-            <div class="random-pool">
-                <textarea id="teddit-random-pool" type="text"></textarea>
-                <ul id="teddit-random-pool-list"></ul>
-            </div>
-        </section> -->
-
     </section>
 
     <script type="module" src="../init.js"></script>
diff --git a/src/pages/options/search/search.html b/src/pages/options/search/search.html
index af7d3946..489ed38a 100644
--- a/src/pages/options/search/search.html
+++ b/src/pages/options/search/search.html
@@ -44,23 +44,6 @@
                 <option value="whoogle">Whoogle</option>
             </select>
         </div>
-<!-- 
-        <section class="settings-block">
-            <h4>SearX Instance List</h4>
-            <div class="random-pool">
-                <textarea id="searx-random-pool" type="text"></textarea>
-                <ul id="searx-random-pool-list"></ul>
-            </div>
-        </section>
-
-        <section class="settings-block">
-            <h4>Whoogle Instance List</h4>
-            <div class="random-pool">
-                <textarea id="whoogle-random-pool" type="text"></textarea>
-                <ul id="whoogle-random-pool-list"></ul>
-            </div>
-        </section> -->
-
     </section>
 
 
diff --git a/src/pages/options/twitter/twitter.html b/src/pages/options/twitter/twitter.html
index b13d02dd..8e189856 100644
--- a/src/pages/options/twitter/twitter.html
+++ b/src/pages/options/twitter/twitter.html
@@ -30,22 +30,6 @@
             <h4>Enable</h4>
             <input id="disable-nitter" type="checkbox" checked />
         </div>
-        <!-- <div class="some-block option-block">
-            <h4>Instance</h4>
-            <div class="autocomplete">
-                <input id="nitter-instance" type="url" name="nitter-instance"
-                    data-localise-placeholder="__MSG_randomInstancePlaceholder__"
-                    placeholder="Random instance (none selected)" />
-            </div>
-        </div> -->
-
-        <!-- <section class="settings-block">
-            <h4>Instance List</h4>
-            <div class="random-pool">
-                <textarea id="nitter-random-pool" type="text"></textarea>
-                <ul id="nitter-random-pool-list"></ul>
-            </div>
-        </section> -->
         <div class="some-block option-block">
             <h4 data-localise="__MSG_removeTwitterSW__">Proactively remove Twitter service worker</h4>
             <input id="remove-twitter-sw" type="checkbox" checked />
diff --git a/src/pages/options/wikipedia/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html
index a68f36a6..ed811e94 100644
--- a/src/pages/options/wikipedia/wikipedia.html
+++ b/src/pages/options/wikipedia/wikipedia.html
@@ -28,20 +28,6 @@
             <h4>Enable</h4>
             <input id="disable-wikipedia" type="checkbox" checked />
         </div>
-        <!-- <div class="some-block option-block">
-            <h4>Instance</h4>
-            <div class="autocomplete">
-                <input id="wikipedia-instance" type="url" placeholder="https://wikiless.org" />
-            </div>
-        </div>
-
-        <section class="settings-block">
-            <h4>Instance List</h4>
-            <div class="random-pool">
-                <textarea id="wikiless-random-pool" type="text"></textarea>
-                <ul id="wikiless-random-pool-list"></ul>
-            </div>
-        </section> -->
     </section>
 
     <script type="module" src="../init.js"></script>
diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html
index a9bb6c63..0778b794 100644
--- a/src/pages/options/youtube/youtube.html
+++ b/src/pages/options/youtube/youtube.html
@@ -30,23 +30,6 @@
             <input id="disable-invidious" type="checkbox" checked />
         </div>
 
-        <!-- <div class="some-block option-block">
-            <h4>Instance</h4>
-            <div class="autocomplete">
-            <input id="invidious-instance" type="url" data-localise-placeholder="__MSG_randomInstancePlaceholder__"
-                placeholder="Random instance (none selected)" />
-            </div>
-        </div> -->
-
-        <!-- <section class="settings-block">
-            <h4>Instance List</h4>
-            <div class="random-pool">
-                <textarea type="textarea" id="invidious-random-pool" name="invidious-random-pool"
-                    type="text"></textarea>
-                <ul id="invidious-random-pool-list"></ul>
-            </div>
-        </section> -->
-
         <div class="some-block option-block">
             <h4>Frontend</h4>
             <select id="youtube-frontend">
@@ -59,7 +42,6 @@
         <hr>
 
         <div id="invidious-piped">
-
             <div class="some-block option-block">
                 <h4>Only Redirect Embedded-Video</h4>
                 <input id="only-embed" type="checkbox" checked />
@@ -108,7 +90,7 @@
             </div>
 
             <div class="some-block option-block">
-                <h4 data-localise="__MSG_invidiousAlwaysProxy__">Always proxy videos</h4>
+                <h4>Always proxy videos</h4>
                 <select id="invidious-always-proxy">
                     <option value="DEFAULT">Default</option>
                     <option value="true">True</option>
@@ -151,7 +133,6 @@
                 <h4>Custom Instances</h4>
             </div>
 
-
             <form id="custom-instance-form">
                 <div class="some-block option-block">
                     <input id="invidious-custom-instance" placeholder="https://invidious.com" type="url" />
diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js
index 595006fd..dcd8c22d 100644
--- a/src/pages/options/youtube/youtube.js
+++ b/src/pages/options/youtube/youtube.js
@@ -69,10 +69,8 @@ invidiousPlayerStyleElement.addEventListener("change",
 );
 
 let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
-invidiousSubtitlesElement.addEventListener("input",
-    commonHelper.debounce(() => {
-        youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
-    }, 500)
+invidiousSubtitlesElement.addEventListener("change",
+    () => youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
 );
 
 let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
@@ -124,62 +122,51 @@ youtubeHelper.init().then(() => {
 
     let myMightyList = youtubeHelper.getInvidiousRedirectsChecks();
 
-    function checkToggleAll() {
-        console.log("CheckToggleAll")
-        let isTrue = true;
-        for (const item of youtubeHelper.getRedirects().invidious.normal)
-            if (!myMightyList.includes(item)) {
-                isTrue = false;
-                break;
-            }
-        document.getElementById('invidious-toogle-all').checked = isTrue;
-    }
-
-
     let checklistList = invidiousCheckListElement.getElementsByTagName('input')
     for (let element of checklistList) {
-
         element.checked = myMightyList.includes(element.id);
-
         if (element.id == 'invidious-toogle-all')
-            document.getElementById('invidious-toogle-all').addEventListener("change",
-                (event) => {
-                    if (event.target.checked) {
-                        for (let item of checklistList) {
-                            myMightyList.push(item.id)
-                            item.checked = true;
-                        }
-                    }
-                    else {
-                        myMightyList = [];
-                        for (let item of checklistList) item.checked = false;
+            document.getElementById('invidious-toogle-all').addEventListener("change", (event) => {
+                if (event.target.checked)
+                    for (let item of checklistList) {
+                        myMightyList.push(item.id);
+                        item.checked = true;
                     }
-                    youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
+                else {
+                    myMightyList = [];
+                    for (let item of checklistList) item.checked = false;
                 }
-            );
+                youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
+            });
         else
-            document.getElementById(element.id).addEventListener("change",
-                (event) => {
-                    if (event.target.checked)
-                        myMightyList.push(element.id)
-                    else {
-                        let index = myMightyList.indexOf(element.id);
-                        if (index > -1) myMightyList.splice(index, 1);
-                    }
-
-                    youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
-                    checkToggleAll();
+            document.getElementById(element.id).addEventListener("change", (event) => {
+                if (event.target.checked)
+                    myMightyList.push(element.id)
+                else {
+                    let index = myMightyList.indexOf(element.id);
+                    if (index > -1) myMightyList.splice(index, 1);
                 }
-            );
+                youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
+                checkToggleAll();
+            });
     }
     checkToggleAll();
 
-
     mightyInvidiousCustomInstances = youtubeHelper.getInvidiousCustomRedirects();
     calcCustom();
 
 });
 
+function checkToggleAll() {
+    let isTrue = true;
+    for (const item of youtubeHelper.getRedirects().invidious.normal)
+        if (!myMightyList.includes(item)) {
+            isTrue = false;
+            break;
+        }
+    document.getElementById('invidious-toogle-all').checked = isTrue;
+}
+
 
 let invidiousCustomInstanceElement = document.getElementById("invidious-custom-instance")
 let mightyInvidiousCustomInstances = []
diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css
index 9046ce26..1d2e9428 100644
--- a/src/pages/stylesheets/styles.css
+++ b/src/pages/stylesheets/styles.css
@@ -19,7 +19,6 @@ body.light-theme {
 body {
   margin: auto;
   padding: 0;
-  min-height: 572px;
   font-family: Sans-Serif;
   background-color: var(--bg-main);
   color: var(--text);
@@ -31,23 +30,11 @@ div.some-block input[type="checkbox"] {
   -webkit-appearance: none;
 }
 
-h2 {
-  clear: both;
-  font-size: 12px;
-  font-weight: normal;
-  margin: 0;
-}
-
-h1,
-h2 {
-  color: var(--text);
-}
-
 input[type="url"],
 input[type="text"],
 select {
   padding: 5px 10px;
-  width: 400px;
+  width: 350px;
   border-radius: 3px;
   box-sizing: border-box;
   margin-bottom: var(--space);
@@ -63,37 +50,11 @@ select {
   padding: 8px;
   background-color: var(--bg-secondary);
   border: none;
-  ;
   margin: 0;
   width: auto;
   border-radius: 3px;
 }
 
-input[type="radio"] {
-  appearance: radio;
-  -moz-appearance: radio;
-  -webkit-appearance: radio;
-}
-
-input[type="radio"]:checked+label {
-  background: transparent;
-}
-
-input:checked+label {
-  background: var(--active);
-}
-
-input:checked+label:after {
-  left: calc(100% - var(--space));
-  transform: translateX(-100%);
-}
-
-.settings-block {
-  display: block;
-  margin: 30px 0;
-  padding: 5px 15px;
-}
-
 a.button * {
   vertical-align: middle;
 }
@@ -113,62 +74,6 @@ a.button:active {
 input:invalid {
   color: var(--danger);
   border-color: var(--danger);
-  background-color: var(--danger-light);
-}
-
-.margin-bottom {
-  margin-bottom: 20px;
-}
-
-div.exceptions {
-  clear: left;
-}
-
-div.exceptions>input {
-  width: 240px;
-  float: left;
-}
-
-#add-to-exceptions {
-  float: right;
-  border: var(--active) solid 1px;
-  background-color: var(--active);
-  color: var(--text);
-  font-weight: bold;
-  cursor: pointer;
-  border-radius: 50%;
-  padding: 1px 1px 0px 1px;
-  margin-right: 5px;
-}
-
-#add-to-exceptions svg {
-  height: 20px;
-  width: 20px;
-}
-
-ul {
-  padding: 0;
-  list-style-type: none;
-  color: var(--text);
-  margin: 20px 20px 0 20px;
-}
-
-li {
-  white-space: nowrap;
-  border-bottom: solid 0.5px var(--bg-secondary);
-  padding: 20px 0px 20px 20px;
-}
-
-#exceptions-items button {
-  float: right;
-  margin-right: -5px;
-  border: var(--active) solid 1px;
-  background-color: var(--active);
-  color: var(--text);
-  font-weight: bold;
-  cursor: pointer;
-  border-radius: 50%;
-  padding: 2px 2px 0px 2px;
 }
 
 .button svg {
@@ -176,48 +81,6 @@ li {
   width: 18px;
 }
 
-.autocomplete {
-  position: relative;
-  display: inline-block;
-  width: 100%;
-}
-
-.autocomplete input {
-  background: url(../../assets/images/chevron-down.svg) right no-repeat;
-}
-
-.autocomplete-items {
-  position: absolute;
-  border: 1px solid var(--bg-main);
-  border-bottom: none;
-  border-top: none;
-  z-index: 99;
-  top: 85%;
-  left: 0;
-  right: 0;
-  overflow-y: auto;
-  max-height: 175px;
-  color: var(--text);
-  overflow-x: hidden;
-  max-width: 380px;
-}
-
-.autocomplete-items div {
-  padding: 10px;
-  cursor: pointer;
-  background-color: var(--bg-secondary);
-  border-bottom: 1px solid var(--bg-main);
-}
-
-.autocomplete-items div:hover {
-  background-color: var(--active);
-}
-
-.autocomplete-active {
-  background-color: var(--active);
-  color: var(--text);
-}
-
 section.option-block {
   width: 50%;
   margin: 0 50px;
@@ -229,10 +92,6 @@ body.option {
   padding: 40px;
 }
 
-section.links {
-  margin: 00px 0;
-}
-
 section.links a {
   display: flex;
   align-items: center;
@@ -244,20 +103,13 @@ section.links a {
   transition: 0.1s;
 }
 
-section.links a:hover {
-  color: var(--active);
-}
-
+section.links a:hover,
 section.links a.selected {
   color: var(--active);
 }
 
-.option td {
-  vertical-align: middle;
-}
-
 input[type="range"] {
-  width: 50%;
+  width: 350px;
 }
 
 ::placeholder {
@@ -265,11 +117,6 @@ input[type="range"] {
   opacity: 0.7;
 }
 
-input[type="text"]:focus,
-input[type="url"]:focus {
-  outline: none;
-}
-
 #volume-value {
   color: var(--active);
 }
@@ -328,7 +175,6 @@ h4 {
 
 div.some-block h4 {
   margin: 0;
-  /* width: 70%; */
 }
 
 div.option-block h4 {
@@ -356,10 +202,6 @@ div.some-block input[type="checkbox"]:checked {
   background-color: var(--active);
 }
 
-div.some-block input[type="checkbox"]:focus {
-  outline: none;
-}
-
 div.some-block input[type="checkbox"]::before {
   content: "";
   display: inline-block;
@@ -372,7 +214,7 @@ div.some-block input[type="checkbox"]::before {
   height: 20px;
   background-color: white;
   border-radius: 50%;
-  transition: .4s;
+  transition: .3s;
 }
 
 div.some-block input[type="checkbox"]:checked::before {
@@ -422,15 +264,6 @@ a.button:active {
   transform: translateY(1px);
 }
 
-textarea {
-  line-height: 21px;
-  background-color: var(--bg-secondary);
-  color: white;
-  border: none;
-  resize: none;
-  width: 100%;
-}
-
 button.default {
   margin-left: 30px;
   background-color: transparent;
@@ -455,11 +288,9 @@ div.checklist div {
   justify-content: space-between;
   margin: 5px 15px;
   padding: 10px 0;
-  /* border-bottom: 2px solid rgb(77, 77, 77); */
   display: flex;
 }
 
-
 button.add {
   background-color: transparent;
   border: none;