aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/assets/javascripts/helpers/common.js11
-rw-r--r--src/pages/background/background.js231
-rw-r--r--src/pages/options/instagram.js37
-rw-r--r--src/pages/options/maps.js23
-rw-r--r--src/pages/options/medium.js59
-rw-r--r--src/pages/options/options.html8
-rw-r--r--src/pages/options/options.js16
-rw-r--r--src/pages/options/reddit.js41
-rw-r--r--src/pages/options/searchEngine.js20
-rw-r--r--src/pages/options/translate.js32
-rw-r--r--src/pages/options/twitter.js48
-rw-r--r--src/pages/options/wikipedia.js40
-rw-r--r--src/pages/options/youtube.js166
13 files changed, 323 insertions, 409 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index c700fd85..c0a6495f 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -8,6 +8,7 @@ function addHttps(instances) {
}
function getRandomInstance(instances) {
+ console.info(instances.length * Math.random(), "=>", instances.length * Math.random())
return instances[~~(instances.length * Math.random())];
}
@@ -19,11 +20,11 @@ function getInstances() {
if (request.status === 200) {
const instances = JSON.parse(request.responseText);
- const nitterRandomPool = addHttps(filterInstances(instances.nitter)).join(',');
- const invidiousRandomPool = addHttps(filterInstances(instances.invidious)).join(',');
- const bibliogramRandomPool = addHttps(filterInstances(instances.bibliogram)).join(',');
- const wikilessRandomPool = addHttps(filterInstances(instances.wikiless)).join(',')
- const scribeRandomPool = addHttps(filterInstances(instances.scribe)).join(',')
+ const nitterRandomPool = addHttps(filterInstances(instances.nitter));
+ const invidiousRandomPool = addHttps(filterInstances(instances.invidious));
+ const bibliogramRandomPool = addHttps(filterInstances(instances.bibliogram));
+ const wikilessRandomPool = addHttps(filterInstances(instances.wikiless));
+ const scribeRandomPool = addHttps(filterInstances(instances.scribe));
browser.storage.sync.set({
nitterRandomPool,
invidiousRandomPool,
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 8776e9eb..f48b31a9 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -157,7 +157,7 @@ browser.storage.sync.get(
useFreeTube = result.useFreeTube;
invidiousRandomPool =
result.invidiousRandomPool
- ? result.invidiousRandomPool.split(",")
+ ? result.invidiousRandomPool
: commonHelper.filterInstances(invidiousInstances);
nitterInstance = result.nitterInstance;
@@ -186,108 +186,107 @@ browser.storage.sync.get(
);
browser.storage.onChanged.addListener((changes) => {
- if ("nitterInstance" in changes) {
+ if ("nitterInstance" in changes)
nitterInstance = changes.nitterInstance.newValue;
- }
- if ("invidiousInstance" in changes) {
+
+ if ("invidiousInstance" in changes)
invidiousInstance = changes.invidiousInstance.newValue;
- }
- if ("bibliogramInstance" in changes) {
+
+ if ("bibliogramInstance" in changes)
bibliogramInstance = changes.bibliogramInstance.newValue;
- }
- if ("osmInstance" in changes) {
+
+ if ("osmInstance" in changes)
osmInstance = changes.osmInstance.newValue || osmDefault;
- }
- if ("simplyTranslateInstance" in changes) {
- simplyTranslateInstance =
- changes.simplyTranslateInstance.newValue || simplyTranslateDefault;
- }
- if ("wikipediaInstance" in changes) {
+
+ if ("simplyTranslateInstance" in changes)
+ simplyTranslateInstance = changes.simplyTranslateInstance.newValue || simplyTranslateDefault;
+
+ if ("wikipediaInstance" in changes)
wikipediaInstance = changes.wikipediaInstance.newValue || wikipediaDefault;
- }
- if ("redditInstance" in changes) {
+
+ if ("redditInstance" in changes)
redditInstance = changes.redditInstance.newValue || redditDefault;
- }
+
if ("redditFrontend" in changes)
redditFrontend = changes.redditFrontend.newValue
- if ("scribeInstance" in changes) {
+ if ("scribeInstance" in changes)
scribeInstance = changes.scribeInstance.newValue || scribeDefault;
- }
- if ("searchEngineInstance" in changes) {
+
+ if ("searchEngineInstance" in changes)
searchEngineInstance = changes.searchEngineInstance.newValue;
- }
- if ("disableNitter" in changes) {
+
+ if ("disableNitter" in changes)
disableNitter = changes.disableNitter.newValue;
- }
- if ("disableScribe" in changes) {
+
+ if ("disableScribe" in changes)
disableScribe = changes.disableScribe.newValue;
- }
- if ("disableInvidious" in changes) {
+
+ if ("disableInvidious" in changes)
disableInvidious = changes.disableInvidious.newValue;
- }
- if ("disableBibliogram" in changes) {
+
+ if ("disableBibliogram" in changes)
disableBibliogram = changes.disableBibliogram.newValue;
- }
- if ("disableOsm" in changes) {
+
+ if ("disableOsm" in changes)
disableOsm = changes.disableOsm.newValue;
- }
- if ("disableReddit" in changes) {
+
+ if ("disableReddit" in changes)
disableReddit = changes.disableReddit.newValue;
- }
- if ("disableSearchEngine" in changes) {
+
+ if ("disableSearchEngine" in changes)
disableSearchEngine = changes.disableSearchEngine.newValue;
- }
- if ("disableSimplyTranslate" in changes) {
+
+ if ("disableSimplyTranslate" in changes)
disableSimplyTranslate = changes.disableSimplyTranslate.newValue;
- }
- if ("disableWikipedia" in changes) {
+
+ if ("disableWikipedia" in changes)
disableWikipedia = changes.disableWikipedia.newValue;
- }
- if ("alwaysProxy" in changes) {
+
+ if ("alwaysProxy" in changes)
alwaysProxy = changes.alwaysProxy.newValue;
- }
- if ("onlyEmbeddedVideo" in changes) {
+
+ if ("onlyEmbeddedVideo" in changes)
onlyEmbeddedVideo = changes.onlyEmbeddedVideo.newValue;
- }
- if ("videoQuality" in changes) {
+
+ if ("videoQuality" in changes)
videoQuality = changes.videoQuality.newValue;
- }
- if ("invidiousDarkMode" in changes) {
+
+ if ("invidiousDarkMode" in changes)
invidiousDarkMode = changes.invidiousDarkMode.newValue;
- }
- if ("invidiousVolume" in changes) {
+
+ if ("invidiousVolume" in changes)
invidiousVolume = changes.invidiousVolume.newValue;
- }
- if ("invidiousPlayerStyle" in changes) {
+
+ if ("invidiousPlayerStyle" in changes)
invidiousPlayerStyle = changes.invidiousPlayerStyle.newValue;
- }
- if ("invidiousSubtitles" in changes) {
+
+ if ("invidiousSubtitles" in changes)
invidiousSubtitles = changes.invidiousSubtitles.newValue;
- }
- if ("invidiousAutoplay" in changes) {
+
+ if ("invidiousAutoplay" in changes)
invidiousAutoplay = changes.invidiousAutoplay.newValue;
- }
- if ("useFreeTube" in changes) {
+
+ if ("useFreeTube" in changes)
useFreeTube = changes.useFreeTube.newValue;
- }
- if ("nitterRandomPool" in changes) {
- nitterRandomPool = changes.nitterRandomPool.newValue.split(",");
- }
- if ("invidiousRandomPool" in changes) {
- invidiousRandomPool = changes.invidiousRandomPool.newValue.split(",");
- }
- if ("bibliogramRandomPool" in changes) {
- bibliogramRandomPool = changes.bibliogramRandomPool.newValue.split(",");
- }
- if ("scribeRandomPool" in changes) {
- scribeRandomPool = changes.scribeRandomPool.newValue.split(",");
- }
- if ("exceptions" in changes) {
+
+ if ("nitterRandomPool" in changes)
+ nitterRandomPool = changes.nitterRandomPool.newValue;
+
+ if ("invidiousRandomPool" in changes)
+ invidiousRandomPool = changes.invidiousRandomPool.newValue;
+
+ if ("bibliogramRandomPool" in changes)
+ bibliogramRandomPool = changes.bibliogramRandomPool.newValue;
+
+ if ("scribeRandomPool" in changes)
+ scribeRandomPool = changes.scribeRandomPool.newValue;
+
+ if ("exceptions" in changes)
exceptions = changes.exceptions.newValue.map((e) => {
return new RegExp(e);
});
- }
+
});
function isException(url, initiator) {
@@ -524,29 +523,22 @@ function redirectReddit(url, initiator, type) {
return null;
console.info(url.host);
- if (url.host === "i.redd.it") {
- if (redditFrontend == 'libreddit')
- return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}/img${url.pathname}${url.search}`;
- if (redditFrontend == 'teddit')
- // As of 2021-04-09, redirects for teddit images are nontrivial:
- // - navigating to the image before ever navigating to its page causes
- // 404 error (probably needs fix on teddit project)
- // - some image links on teddit are very different
- // Therefore, don't support redirecting image links for teddit.
- return null;
-
- return null;
-
- } else if (url.host === "redd.it") {
+ if (url.host === "i.redd.it")
+ // As of 2021-04-09, redirects for teddit images are nontrivial:
+ // - navigating to the image before ever navigating to its page causes
+ // 404 error (probably needs fix on teddit project)
+ // - some image links on teddit are very different
+ // Therefore, don't support redirecting image links for teddit.
+ return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}/img${url.pathname}${url.search}`;
+ else if (url.host === "redd.it") {
if (redditFrontend == 'libreddit')
return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}${url.pathname}${url.search}`;
if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/))
// As of 2021-04-22, redirects for teddit redd.it/foo links don't work.
// It appears that adding "/comments" as a prefix works, so manually add
- // that prefix if it is missing. Even though redd.it/comments/foo links
+ // that prefix if it is missing. Even though redd.it/comments/foo links
// don't seem to work or exist, guard against affecting those kinds of
// paths.
- //
// Note the difference between redd.it/comments/foo (doesn't work) and
// teddit.net/comments/foo (works).
return `${redditInstance || commonHelper.getRandomInstance(redditInstances['teddit'])}/comments${url.pathname}${url.search}`;
@@ -559,9 +551,8 @@ function redirectReddit(url, initiator, type) {
}
function redirectMedium(url, initiator) {
- if (disableScribe || isException(url, initiator)) {
+ if (disableScribe || isException(url, initiator))
return null;
- }
if (url.pathname == "/")
return null;
@@ -573,23 +564,17 @@ function redirectMedium(url, initiator) {
scribeInstances.includes(initiator.origin) ||
mediumDomains.includes(initiator.host))
) {
- browser.storage.sync.set({
- redirectBypassFlag: true,
- });
+ browser.storage.sync.set({ redirectBypassFlag: true });
return null;
}
- return `${scribeInstance || commonHelper.getRandomInstance(scribeRandomPool)
- }${url.pathname}${url.search}`;
+ return `${scribeInstance || commonHelper.getRandomInstance(scribeRandomPool)}${url.pathname}${url.search}`;
}
function redirectSearchEngine(url, initiator) {
- if (disableSearchEngine || isException(url, initiator)) {
+ if (disableSearchEngine || isException(url, initiator))
return null;
- }
- const searchEngine =
- searchEngineInstance ||
- commonHelper.getRandomInstance(searchEngineInstances);
+ const searchEngine = searchEngineInstance || commonHelper.getRandomInstance(searchEngineInstances);
let search = "";
url.search
.slice(1)
@@ -601,17 +586,13 @@ function redirectSearchEngine(url, initiator) {
}
function redirectGoogleTranslate(url, initiator) {
- if (disableSimplyTranslate || isException(url, initiator)) {
- return null;
- }
+ if (disableSimplyTranslate || isException(url, initiator)) return null;
return `${simplyTranslateInstance}/${url.search}`;
}
function redirectWikipedia(url, initiator) {
- if (disableWikipedia || isException(url, initiator)) {
- return null;
- }
+ if (disableWikipedia || isException(url, initiator)) return null;
let GETArguments = [];
if (url.search.length > 0) {
let search = url.search.substring(1); //get rid of '?'
@@ -631,9 +612,9 @@ function redirectWikipedia(url, initiator) {
GETArguments.push(["mobileaction", "toggle_view_mobile"]);
//wikiless doesn't have mobile view support yet
}
- for (let i = 0; i < GETArguments.length; i++) {
+ for (let i = 0; i < GETArguments.length; i++)
link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
- }
+
if (
urlSplit[urlSplit.length - 1] == "org" &&
urlSplit[urlSplit.length - 2] == "wikipedia"
@@ -647,11 +628,10 @@ browser.webRequest.onBeforeRequest.addListener(
(details) => {
const url = new URL(details.url);
let initiator;
- if (details.originUrl) {
+ if (details.originUrl)
initiator = new URL(details.originUrl);
- } else if (details.initiator) {
+ else if (details.initiator)
initiator = new URL(details.initiator);
- }
let newUrl;
if (youtubeDomains.includes(url.host))
@@ -673,24 +653,13 @@ browser.webRequest.onBeforeRequest.addListener(
else if (url.host.match(wikipediaRegex))
newUrl = redirectWikipedia(url, initiator);
- let redirect;
if (newUrl) {
- redirect = {
- redirectUrl: newUrl
- }
- console.info(
- "Redirecting",
- `"${url.href}"`,
- "=>",
- `"${redirect.redirectUrl}"`
- );
- // console.info("Details", details);
+ console.info("Redirecting", url.href, "=>", newUrl);
+ return { redirectUrl: newUrl };
}
- return redirect;
- },
- {
- urls: ["<all_urls>"],
+ return null;
},
+ { urls: ["<all_urls>"], },
["blocking"]
);
@@ -729,10 +698,14 @@ browser.pageAction.onClicked.addListener((tab) => {
newUrl = 'https://twitter.com';
else if (bibliogramInstances.includes(protocolHost))
newUrl = 'https://instagram.com';
- else if (redditInstances['libreddit'].includes(protocolHost))
- newUrl = 'https://reddit.com';
- else if (redditInstances['teddit'].includes(protocolHost))
- newUrl = 'https://reddit.com';
+ else if (redditInstances['libreddit'].includes(protocolHost) || redditInstances['teddit'].includes(protocolHost)) {
+ if (tabUrl.pathname.startsWith('/img')) {
+ newUrl = "https://i.redd.it"
+ tabUrl.href = tabUrl.href.replace("/img", "")
+ }
+ else
+ newUrl = 'https://reddit.com';
+ }
else if (searchEngineInstances.includes(protocolHost))
newUrl = 'https://google.com';
else if (simplyTranslateInstances.includes(protocolHost))
diff --git a/src/pages/options/instagram.js b/src/pages/options/instagram.js
index 17dcc0bf..29e80ee9 100644
--- a/src/pages/options/instagram.js
+++ b/src/pages/options/instagram.js
@@ -5,9 +5,9 @@ import shared from "./shared.js";
const bibliogramInstances = instagramHelper.redirects;
-let bibliogramInstance = document.getElementById("bibliogram-instance");
-let disableBibliogram = document.getElementById("disable-bibliogram");
-let bibliogramRandomPool = document.getElementById("bibliogram-random-pool");
+let bibliogramInstanceElement = document.getElementById("bibliogram-instance");
+let disableBibliogramElement = document.getElementById("disable-bibliogram");
+let bibliogramRandomPoolElement = document.getElementById("bibliogram-random-pool");
browser.storage.sync.get(
[
@@ -16,33 +16,26 @@ browser.storage.sync.get(
"bibliogramRandomPool",
],
(result) => {
- bibliogramInstance.value = result.bibliogramInstance || "";
- disableBibliogram.checked = !result.disableBibliogram;
- bibliogramRandomPool.value = result.bibliogramRandomPool || commonHelper.filterInstances(bibliogramInstances);
+ bibliogramInstanceElement.value = result.bibliogramInstance || "";
+ disableBibliogramElement.checked = !result.disableBibliogram;
+ bibliogramRandomPoolElement.value = result.bibliogramRandomPool || commonHelper.filterInstances(bibliogramInstances);
let id = "bibliogram-instance";
- let instances = bibliogramRandomPool.value.split(',')
+ let instances = bibliogramRandomPoolElement.value.split(',')
shared.autocompletes.push({ id: id, instances: instances })
shared.autocomplete(document.getElementById(id), instances);
}
)
-const bibliogramInstanceChange = commonHelper.debounce(() => {
- if (bibliogramInstance.checkValidity()) {
- browser.storage.sync.set({
- bibliogramInstance: shared.parseURL(bibliogramInstance.value),
- });
- }
-}, 500);
-bibliogramInstance.addEventListener("input", bibliogramInstanceChange);
+bibliogramInstanceElement.addEventListener("input", commonHelper.debounce(() => {
+ if (bibliogramInstanceElement.checkValidity())
+ browser.storage.sync.set({ bibliogramInstance: shared.parseURL(bibliogramInstanceElement.value) });
+}, 500));
-disableBibliogram.addEventListener("change", (event) => {
+disableBibliogramElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableBibliogram: !event.target.checked });
});
-const bibliogramRandomPoolChange = commonHelper.debounce(() => {
- browser.storage.sync.set({
- bibliogramRandomPool: bibliogramRandomPool.value,
- });
-}, 500);
-bibliogramRandomPool.addEventListener("input", bibliogramRandomPoolChange);
+bibliogramRandomPoolElement.addEventListener("input", commonHelper.debounce(() => {
+ browser.storage.sync.set({ bibliogramRandomPool: bibliogramRandomPoolElement.value });
+}, 500));
diff --git a/src/pages/options/maps.js b/src/pages/options/maps.js
index ff83f9e8..89a92057 100644
--- a/src/pages/options/maps.js
+++ b/src/pages/options/maps.js
@@ -3,8 +3,9 @@ import commonHelper from "../../assets/javascripts/helpers/common.js";
import shared from "./shared.js";
const osmInstances = mapsHelper.redirects;
-let osmInstance = document.getElementById("osm-instance");
-let disableOsm = document.getElementById("disable-osm");
+
+let osmInstanceElement = document.getElementById("osm-instance");
+let disableOsmElement = document.getElementById("disable-osm");
browser.storage.sync.get(
[
@@ -12,8 +13,8 @@ browser.storage.sync.get(
"disableOsm",
],
(result) => {
- osmInstance.value = result.osmInstance || "";
- disableOsm.checked = !result.disableOsm;
+ osmInstanceElement.value = result.osmInstance || "";
+ disableOsmElement.checked = !result.disableOsm;
let id = "osm-instance"
let instances = osmInstances
shared.autocompletes.push({ id: id, instances: instances })
@@ -21,15 +22,11 @@ browser.storage.sync.get(
}
)
-const osmInstanceChange = commonHelper.debounce(() => {
- if (osmInstance.checkValidity()) {
- browser.storage.sync.set({
- osmInstance: shared.parseURL(osmInstance.value),
- });
- }
-}, 500);
-osmInstance.addEventListener("input", osmInstanceChange);
+osmInstanceElement.addEventListener("input", commonHelper.debounce(() => {
+ if (osmInstanceElement.checkValidity())
+ browser.storage.sync.set({ osmInstance: shared.parseURL(osmInstanceElement.value) });
+}, 500));
-disableOsm.addEventListener("change", (event) => {
+disableOsmElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableOsm: !event.target.checked });
}); \ No newline at end of file
diff --git a/src/pages/options/medium.js b/src/pages/options/medium.js
index a83a7c05..cd00c1a2 100644
--- a/src/pages/options/medium.js
+++ b/src/pages/options/medium.js
@@ -4,10 +4,9 @@ import shared from "./shared.js";
const scribeInstances = mediumHelper.redirects;
-let scribeInstance = document.getElementById("scribe-instance");
-let disableScribe = document.getElementById("disable-scribe");
-let scribeRandomPool = document.getElementById("scribe-random-pool");
-
+let scribeInstanceElement = document.getElementById("scribe-instance");
+let disableScribeElement = document.getElementById("disable-scribe");
+let scribeRandomPoolElement = document.getElementById("scribe-random-pool");
browser.storage.sync.get(
[
@@ -16,46 +15,32 @@ browser.storage.sync.get(
"scribeRandomPool",
],
(result) => {
- scribeInstance.value = result.scribeInstance || "";
- disableScribe.checked = !result.disableScribe;
- scribeRandomPool.value = result.scribeRandomPool || commonHelper.filterInstances(scribeInstances);
+ scribeInstanceElement.value = result.scribeInstance || "";
+ disableScribeElement.checked = !result.disableScribe;
+ scribeRandomPoolElement.value = (result.scribeRandomPool || commonHelper.filterInstances(scribeInstances)).join("\n");
let id = "scribe-instance";
- let instances = scribeRandomPool.value.split(',')
+ let instances = scribeRandomPoolElement.value.split(',')
shared.autocompletes.push({ id: id, instances: instances })
shared.autocomplete(document.getElementById(id), instances);
}
)
-disableScribe.addEventListener(
- "change",
- (event) => {
- console.info("isScibeEnabled:", event.target.checked)
+disableScribeElement.addEventListener("change", (event) => {
+ console.info("isScibeEnabled:", event.target.checked)
+ browser.storage.sync.set({ disableScribe: !event.target.checked });
+});
+
+scribeInstanceElement.addEventListener("input", commonHelper.debounce(() => {
+ if (scribeInstanceElement.checkValidity()) {
+ console.info("selectedScribeInstance", scribeInstanceElement.value);
browser.storage.sync.set({
- disableScribe: !event.target.checked
+ scribeInstance: shared.parseURL(scribeInstanceElement.value)
});
}
-);
-
-const scribeInstanceChange = commonHelper.debounce(
- () => {
- if (scribeInstance.checkValidity()) {
- console.info("selectedScribeInstance", scribeInstance.value);
- browser.storage.sync.set({
- scribeInstance: shared.parseURL(scribeInstance.value)
- });
- }
- },
- 500
-);
+}, 500));
-scribeInstance.addEventListener("input", scribeInstanceChange);
-
-const scribeRandomPoolChange = commonHelper.debounce(
- () => {
- browser.storage.sync.set({
- scribeRandomPool: scribeRandomPool.value
- });
- },
- 500
-);
-scribeRandomPool.addEventListener("input", scribeRandomPoolChange); \ No newline at end of file
+scribeRandomPoolElement.addEventListener("input", commonHelper.debounce(() => {
+ browser.storage.sync.set({
+ scribeRandomPool: scribeRandomPoolElement.value.split('\n')
+ });
+}, 500)); \ No newline at end of file
diff --git a/src/pages/options/options.html b/src/pages/options/options.html
index 6f8b1f74..c4a9c187 100644
--- a/src/pages/options/options.html
+++ b/src/pages/options/options.html
@@ -101,7 +101,7 @@
</div>
<section class="settings-block">
- <h4>Random Instance Pool (comma-separated)</h4>
+ <h4>Random Instance Pool</h4>
<textarea type="textarea" id="invidious-random-pool" name="invidious-random-pool" type="text"></textarea>
</section>
@@ -303,6 +303,10 @@
</div>
</div>
+ <section class="settings-block">
+ <h4>Random instance pool</h4>
+ <textarea id="wikiless-random-pool" type="text"></textarea>
+ </section>
</section>
@@ -321,7 +325,7 @@
</div>
<section class="settings-block">
<h4>Random instance pool (comma-separated)</h4>
- <textarea id="scribe-random-pool" name="scribe-random-pool" type="text"></textarea>
+ <textarea id="scribe-random-pool" type="text"></textarea>
</section>
</section>
diff --git a/src/pages/options/options.js b/src/pages/options/options.js
index 48c81c19..6d4c7ba1 100644
--- a/src/pages/options/options.js
+++ b/src/pages/options/options.js
@@ -6,7 +6,7 @@ import shared from "./shared.js";
const domparser = new DOMParser();
-let theme = document.getElementById("theme");
+let themeElement = document.getElementById("theme");
let exceptions;
window.browser = window.browser || window.chrome;
@@ -26,9 +26,7 @@ function prependExceptionsItem(item, index) {
button.appendChild(domparser.parseFromString(svg, "image/svg+xml").documentElement);
button.addEventListener("click", () => {
exceptions.splice(index, 1);
- browser.storage.sync.set({
- exceptions: exceptions,
- });
+ browser.storage.sync.set({ exceptions: exceptions });
li.remove();
});
}
@@ -39,7 +37,7 @@ browser.storage.sync.get(
"theme",
],
(result) => {
- theme.value = result.theme || "";
+ themeElement.value = result.theme || "";
if (result.theme) document.body.classList.add(result.theme);
exceptions = result.exceptions || [];
exceptions.forEach(prependExceptionsItem);
@@ -74,7 +72,7 @@ function addToExceptions() {
}
document.getElementById("add-to-exceptions").addEventListener("click", addToExceptions);
-theme.addEventListener("change", (event) => {
+themeElement.addEventListener("change", (event) => {
const value = event.target.options[theme.selectedIndex].value;
switch (value) {
case "dark-theme":
@@ -89,9 +87,7 @@ theme.addEventListener("change", (event) => {
document.body.classList.remove("light-theme");
document.body.classList.remove("dark-theme");
}
- browser.storage.sync.set({
- theme: value,
- });
+ browser.storage.sync.set({ theme: value });
});
document.querySelector("#update-instances").addEventListener("click", () => {
@@ -100,4 +96,4 @@ document.querySelector("#update-instances").addEventListener("click", () => {
document.querySelector("#update-instances").innerHTML = 'Done!';
else
document.querySelector("#update-instances").innerHTML = 'Failed Miserabely';
-}); \ No newline at end of file
+});
diff --git a/src/pages/options/reddit.js b/src/pages/options/reddit.js
index 9f515d5c..affc7a88 100644
--- a/src/pages/options/reddit.js
+++ b/src/pages/options/reddit.js
@@ -5,9 +5,9 @@ import shared from "./shared.js";
const redditInstances = redditHelper.redirects;
-let redditInstance = document.getElementById("reddit-instance");
-let disableReddit = document.getElementById("disable-reddit");
-let redditFrontend = document.getElementById("reddit-frontend");
+let redditInstanceElement = document.getElementById("reddit-instance");
+let disableRedditElement = document.getElementById("disable-reddit");
+let redditFrontendElement = document.getElementById("reddit-frontend");
browser.storage.sync.get(
[
@@ -16,9 +16,9 @@ browser.storage.sync.get(
"redditFrontend"
],
(result) => {
- redditInstance.value = result.redditInstance || "";
- disableReddit.checked = !result.disableReddit;
- redditFrontend.value = result.redditFrontend;
+ redditInstanceElement.value = result.redditInstance || "";
+ disableRedditElement.checked = !result.disableReddit;
+ redditFrontendElement.value = result.redditFrontend;
let id = "reddit-instance";
let instances = redditInstances;
shared.autocompletes.push({ id: id, instances: instances })
@@ -26,27 +26,20 @@ browser.storage.sync.get(
}
)
-const redditInstanceChange = commonHelper.debounce(
- () => {
- if (redditInstance.checkValidity()) {
- browser.storage.sync.set({
- redditInstance: shared.parseURL(redditInstance.value),
- });
- }
- },
- 500
-);
-
-redditInstance.addEventListener("input", redditInstanceChange);
+redditInstanceElement.addEventListener("input", commonHelper.debounce(() => {
+ if (redditInstanceElement.checkValidity()) {
+ browser.storage.sync.set({
+ redditInstance: shared.parseURL(redditInstanceElement.value),
+ });
+ }
+}, 500));
-disableReddit.addEventListener("change", (event) => {
+disableRedditElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableReddit: !event.target.checked });
});
-redditFrontend.addEventListener("change", (event) => {
- const value = event.target.options[redditFrontend.selectedIndex].value;
+redditFrontendElement.addEventListener("change", (event) => {
+ const value = event.target.options[redditFrontendElement.selectedIndex].value;
console.info("Reddit Frontend", value)
- browser.storage.sync.set({
- redditFrontend: value,
- })
+ browser.storage.sync.set({ redditFrontend: value })
}) \ No newline at end of file
diff --git a/src/pages/options/searchEngine.js b/src/pages/options/searchEngine.js
index d8ce756c..856e51c4 100644
--- a/src/pages/options/searchEngine.js
+++ b/src/pages/options/searchEngine.js
@@ -3,8 +3,8 @@ import commonHelper from "../../assets/javascripts/helpers/common.js";
import shared from "./shared.js";
const searchEngineInstances = searchHelper.redirects;
-let searchEngineInstance = document.getElementById("searchEngine-instance");
-let disableSearchEngine = document.getElementById("disable-searchEngine");
+let searchEngineInstanceElement = document.getElementById("searchEngine-instance");
+let disableSearchEngineElement = document.getElementById("disable-searchEngine");
browser.storage.sync.get(
[
@@ -12,9 +12,9 @@ browser.storage.sync.get(
"disableSearchEngine",
],
(result) => {
- searchEngineInstance.value = (result.searchEngineInstance && result.searchEngineInstance.link) || "";
+ searchEngineInstanceElement.value = (result.searchEngineInstance && result.searchEngineInstance.link) || "";
- disableSearchEngine.checked = !result.disableSearchEngine;
+ disableSearchEngineElement.checked = !result.disableSearchEngine;
let id = "searchEngine-instance"
let instances = searchEngineInstances.map((instance) => instance.link)
@@ -25,18 +25,18 @@ browser.storage.sync.get(
const searchEngineInstanceChange = commonHelper.debounce(() => {
const instance = searchEngineInstances.find(
- (instance) => instance.link === searchEngineInstance.value
+ (instance) => instance.link === searchEngineInstanceElement.value
);
- if (instance || !searchEngineInstance.value) {
+ if (instance || !searchEngineInstanceElement.value) {
browser.storage.sync.set({
- searchEngineInstance: instance || searchEngineInstance.value,
+ searchEngineInstance: instance || searchEngineInstanceElement.value,
});
} else {
- searchEngineInstance.setCustomValidity("Must be an instance from the list");
+ searchEngineInstanceElement.setCustomValidity("Must be an instance from the list");
}
}, 500);
-searchEngineInstance.addEventListener("input", searchEngineInstanceChange);
+searchEngineInstanceElement.addEventListener("input", searchEngineInstanceChange);
-disableSearchEngine.addEventListener("change", (event) => {
+disableSearchEngineElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableSearchEngine: !event.target.checked });
});
diff --git a/src/pages/options/translate.js b/src/pages/options/translate.js
index 1306dd8f..7259df00 100644
--- a/src/pages/options/translate.js
+++ b/src/pages/options/translate.js
@@ -3,8 +3,9 @@ import commonHelper from "../../assets/javascripts/helpers/common.js";
import shared from "./shared.js";
const simplyTranslateInstances = googleTranslateHelper.redirects;
-let simplyTranslateInstance = document.getElementById("simplyTranslate-instance");
-let disableSimplyTranslate = document.getElementById("disable-simplyTranslate");
+
+let simplyTranslateInstanceElement = document.getElementById("simplyTranslate-instance");
+let disableSimplyTranslateElement = document.getElementById("disable-simplyTranslate");
browser.storage.sync.get(
@@ -13,9 +14,8 @@ browser.storage.sync.get(
"disableSimplyTranslate",
],
(result) => {
-
- simplyTranslateInstance.value = result.simplyTranslateInstance || "";
- disableSimplyTranslate.checked = !result.disableSimplyTranslate;
+ simplyTranslateInstanceElement.value = result.simplyTranslateInstance || "";
+ disableSimplyTranslateElement.checked = !result.disableSimplyTranslate;
let id = "simplyTranslate-instance"
let instances = simplyTranslateInstances;
shared.autocompletes.push({ id: id, instances: instances })
@@ -23,20 +23,16 @@ browser.storage.sync.get(
}
)
-const simplyTranslateInstanceChange = commonHelper.debounce(() => {
- if (simplyTranslateInstance.checkValidity()) {
- browser.storage.sync.set({
- simplyTranslateInstance: shared.parseURL(simplyTranslateInstance.value),
- });
- }
-}, 500);
-simplyTranslateInstance.addEventListener(
+simplyTranslateInstanceElement.addEventListener(
"input",
- simplyTranslateInstanceChange
-);
-
-
+ commonHelper.debounce(() => {
+ if (simplyTranslateInstanceElement.checkValidity()) {
+ browser.storage.sync.set({
+ simplyTranslateInstance: shared.parseURL(simplyTranslateInstanceElement.value),
+ });
+ }
+ }, 500));
-disableSimplyTranslate.addEventListener("change", (event) => {
+disableSimplyTranslateElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableSimplyTranslate: !event.target.checked });
}); \ No newline at end of file
diff --git a/src/pages/options/twitter.js b/src/pages/options/twitter.js
index 8bd5affa..1f6be4e1 100644
--- a/src/pages/options/twitter.js
+++ b/src/pages/options/twitter.js
@@ -3,10 +3,11 @@ import commonHelper from "../../assets/javascripts/helpers/common.js";
import shared from "./shared.js";
const nitterInstances = twitterHelper.redirects;
-let nitterInstance = document.getElementById("nitter-instance");
-let disableNitter = document.getElementById("disable-nitter");
-let nitterRandomPool = document.getElementById("nitter-random-pool");
-let removeTwitterSW = document.getElementById("remove-twitter-sw");
+
+let nitterInstanceElement = document.getElementById("nitter-instance");
+let disableNitterElement = document.getElementById("disable-nitter");
+let nitterRandomPoolElement = document.getElementById("nitter-random-pool");
+let removeTwitterSWElement = document.getElementById("remove-twitter-sw");
browser.storage.sync.get(
[
@@ -16,38 +17,33 @@ browser.storage.sync.get(
"removeTwitterSW",
],
(result) => {
- nitterInstance.value = result.nitterInstance || "";
- disableNitter.checked = !result.disableNitter;
- nitterRandomPool.value = result.nitterRandomPool || commonHelper.filterInstances(nitterInstances);
- removeTwitterSW.checked = !result.removeTwitterSW;
+ nitterInstanceElement.value = result.nitterInstance || "";
+ disableNitterElement.checked = !result.disableNitter;
+ nitterRandomPoolElement.value = result.nitterRandomPool || commonHelper.filterInstances(nitterInstances);
+ removeTwitterSWElement.checked = !result.removeTwitterSW;
let id = "nitter-instance"
- let instances = nitterRandomPool.value.split(',')
+ let instances = nitterRandomPoolElement.value.split(',')
shared.autocompletes.push({ id: id, instances: instances })
shared.autocomplete(document.getElementById(id), instances);
}
)
-const nitterInstanceChange = commonHelper.debounce(
- () => {
- if (nitterInstance.checkValidity()) {
- browser.storage.sync.set({
- nitterInstance: shared.parseURL(nitterInstance.value),
- });
- }
- },
- 500)
-nitterInstance.addEventListener("input", nitterInstanceChange);
-
+nitterInstanceElement.addEventListener("input", commonHelper.debounce(() => {
+ if (nitterInstanceElement.checkValidity()) {
+ browser.storage.sync.set({
+ nitterInstance: shared.parseURL(nitterInstanceElement.value),
+ });
+ }
+}, 500));
-disableNitter.addEventListener("change", (event) => {
+disableNitterElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableNitter: !event.target.checked });
});
-removeTwitterSW.addEventListener("change", (event) => {
+removeTwitterSWElement.addEventListener("change", (event) => {
browser.storage.sync.set({ removeTwitterSW: !event.target.checked });
});
-const nitterRandomPoolChange = commonHelper.debounce(() => {
- browser.storage.sync.set({ nitterRandomPool: nitterRandomPool.value });
-}, 500);
-nitterRandomPool.addEventListener("input", nitterRandomPoolChange);
+nitterRandomPoolElement.addEventListener("input", commonHelper.debounce(() => {
+ browser.storage.sync.set({ nitterRandomPool: nitterRandomPoolElement.value });
+}, 500));
diff --git a/src/pages/options/wikipedia.js b/src/pages/options/wikipedia.js
index 49b63fcd..f7ff15fa 100644
--- a/src/pages/options/wikipedia.js
+++ b/src/pages/options/wikipedia.js
@@ -3,40 +3,42 @@ import commonHelper from "../../assets/javascripts/helpers/common.js";
import shared from "./shared.js";
-const wikipediaInstances = wikipediaHelper.redirects;
+const wikilessInstances = wikipediaHelper.redirects;
-let wikipediaInstance = document.getElementById("wikipedia-instance");
-
-let disableWikipedia = document.getElementById("disable-wikipedia");
+let wikipediaInstanceElement = document.getElementById("wikipedia-instance");
+let disableWikipediaElement = document.getElementById("disable-wikipedia");
+let wikilessRandomPoolElement = document.getElementById("wikiless-random-pool");
browser.storage.sync.get(
[
"wikipediaInstance",
"disableWikipedia",
+ "wikilessRandomPool"
],
(result) => {
- wikipediaInstance.value = result.wikipediaInstance || "";
-
- disableWikipedia.checked = !result.disableWikipedia;
- let id = "wikipedia-instance"
- let instances = wikipediaInstances
+ wikipediaInstanceElement.value = result.wikipediaInstance || "";
+ disableWikipediaElement.checked = !result.disableWikipedia;
+ wikilessRandomPoolElement.value = (result.wikilessRandomPool || commonHelper.filterInstances(wikilessInstances)).join("\n")
+ let id = "wikipedia-instance";
+ let instances = wikilessInstances;
shared.autocompletes.push({ id: id, instances: instances })
shared.autocomplete(document.getElementById(id), instances);
}
)
-const wikipediaInstanceChange = commonHelper.debounce(() => {
- if (wikipediaInstance.checkValidity()) {
+wikipediaInstanceElement.addEventListener("input", commonHelper.debounce(() => {
+ if (wikipediaInstanceElement.checkValidity()) {
browser.storage.sync.set({
- wikipediaInstance: shared.parseURL(wikipediaInstance.value),
+ wikipediaInstance: shared.parseURL(wikipediaInstanceElement.value),
});
}
-}, 500);
-wikipediaInstance.addEventListener(
- "input",
- wikipediaInstanceChange
-);
+}, 500));
-disableWikipedia.addEventListener("change", (event) => {
+disableWikipediaElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableWikipedia: !event.target.checked });
-}); \ No newline at end of file
+});
+
+browser.storage.onChanged.addListener((changes) => {
+ if ("wikilessRandomPool" in changes)
+ wikilessRandomPoolElement.value = changes.wikilessRandomPool.newValue.join("\n");
+}) \ No newline at end of file
diff --git a/src/pages/options/youtube.js b/src/pages/options/youtube.js
index ec067b8a..d581064d 100644
--- a/src/pages/options/youtube.js
+++ b/src/pages/options/youtube.js
@@ -4,19 +4,19 @@ import shared from "./shared.js";
const invidiousInstances = youtubeHelper.redirects;
-let invidiousInstance = document.getElementById("invidious-instance");
-let disableInvidious = document.getElementById("disable-invidious");
-let invidiousDarkMode = document.getElementById("invidious-dark-mode");
-let persistInvidiousPrefs = document.getElementById("persist-invidious-prefs");
-let invidiousVolume = document.getElementById("invidious-volume");
-let invidiousPlayerStyle = document.getElementById("invidious-player-style");
-let invidiousSubtitles = document.getElementById("invidious-subtitles");
-let invidiousAutoplay = document.getElementById("invidious-autoplay");
-let invidiousRandomPool = document.getElementById("invidious-random-pool");
-let useFreeTube = document.getElementById("use-freetube");
-let alwaysProxy = document.getElementById("always-proxy");
-let onlyEmbeddedVideo = document.getElementById("only-embed");
-let videoQuality = document.getElementById("video-quality");
+let invidiousInstanceElement = document.getElementById("invidious-instance");
+let disableInvidiousElement = document.getElementById("disable-invidious");
+let invidiousDarkModeElement = document.getElementById("invidious-dark-mode");
+let persistInvidiousPrefsElement = document.getElementById("persist-invidious-prefs");
+let invidiousVolumeElement = document.getElementById("invidious-volume");
+let invidiousPlayerStyleElement = document.getElementById("invidious-player-style");
+let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
+let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
+let invidiousRandomPoolElement = document.getElementById("invidious-random-pool");
+let useFreeTubeElement = document.getElementById("use-freetube");
+let alwaysProxyElement = document.getElementById("always-proxy");
+let onlyEmbeddedVideoElement = document.getElementById("only-embed");
+let videoQualityElement = document.getElementById("video-quality");
browser.storage.sync.get(
[
@@ -35,116 +35,94 @@ browser.storage.sync.get(
"videoQuality",
],
(result) => {
- invidiousInstance.value = result.invidiousInstance || "";
- disableInvidious.checked = !result.disableInvidious;
- invidiousDarkMode.checked = result.invidiousDarkMode;
- persistInvidiousPrefs.checked = result.persistInvidiousPrefs;
- invidiousVolume.value = result.invidiousVolume;
+ invidiousInstanceElement.value = result.invidiousInstance || "";
+ disableInvidiousElement.checked = !result.disableInvidious;
+ invidiousDarkModeElement.checked = result.invidiousDarkMode;
+ persistInvidiousPrefsElement.checked = result.persistInvidiousPrefs;
+ invidiousVolumeElement.value = result.invidiousVolume;
document.querySelector("#volume-value").textContent = result.invidiousVolume ? `${result.invidiousVolume}%` : " - ";
- invidiousPlayerStyle.value = result.invidiousPlayerStyle || "";
- invidiousSubtitles.value = result.invidiousSubtitles || "";
- invidiousAutoplay.checked = result.invidiousAutoplay;
- invidiousRandomPool.value = result.invidiousRandomPool || commonHelper.filterInstances(invidiousInstances);
- useFreeTube.checked = result.useFreeTube;
- onlyEmbeddedVideo.checked = result.onlyEmbeddedVideo;
- alwaysProxy.checked = result.alwaysProxy;
- videoQuality.value = result.videoQuality || "";
+ invidiousPlayerStyleElement.value = result.invidiousPlayerStyle || "";
+ invidiousSubtitlesElement.value = result.invidiousSubtitles || "";
+ invidiousAutoplayElement.checked = result.invidiousAutoplay;
+ invidiousRandomPoolElement.value = (result.invidiousRandomPool || commonHelper.filterInstances(invidiousInstances)).join("\n");
+ useFreeTubeElement.checked = result.useFreeTube;
+ onlyEmbeddedVideoElement.checked = result.onlyEmbeddedVideo;
+ alwaysProxyElement.checked = result.alwaysProxy;
+ videoQualityElement.value = result.videoQuality || "";
let id = "invidious-instance"
- let instances = invidiousRandomPool.value.split(',');
+ let instances = invidiousRandomPoolElement.value.split('\n');
shared.autocompletes.push({ id: id, instances: instances });
shared.autocomplete(document.getElementById(id), instances);
}
)
-const invidiousInstanceChange = commonHelper.debounce(
- () => {
- if (invidiousInstance.checkValidity())
- browser.storage.sync.set({
- invidiousInstance: shared.parseURL(invidiousInstance.value),
- });
- },
- 500
+invidiousInstanceElement.addEventListener("input",
+ commonHelper.debounce(() => {
+ if (invidiousInstanceElement.checkValidity())
+ browser.storage.sync.set({ invidiousInstance: shared.parseURL(invidiousInstanceElement.value) });
+ }, 500)
);
-invidiousInstance.addEventListener("input", invidiousInstanceChange);
-disableInvidious.addEventListener(
- "change",
- (event) => {
- browser.storage.sync.set({ disableInvidious: !event.target.checked });
- }
-);
+disableInvidiousElement.addEventListener("change", (event) => {
+ browser.storage.sync.set({ disableInvidious: !event.target.checked });
+});
-invidiousDarkMode.addEventListener(
- "change",
- (event) => {
- console.info("InvidiousDarkMode", event.target.checked);
- browser.storage.sync.set({ invidiousDarkMode: event.target.checked });
- }
-);
+invidiousDarkModeElement.addEventListener("change", (event) => {
+ console.info("InvidiousDarkMode", event.target.checked);
+ browser.storage.sync.set({ invidiousDarkMode: event.target.checked });
+});
-persistInvidiousPrefs.addEventListener(
- "change",
- (event) => {
- console.info("Persist preferences (as cookie)", event.target.checked);
- browser.storage.sync.set({ persistInvidiousPrefs: event.target.checked });
- }
-);
+persistInvidiousPrefsElement.addEventListener("change", (event) => {
+ console.info("Persist preferences (as cookie)", event.target.checked);
+ browser.storage.sync.set({ persistInvidiousPrefs: event.target.checked });
+});
-const invidiousVolumeChange = commonHelper.debounce(
- () => {
- document.querySelector("#volume-value").textContent = `${invidiousVolume.value}%`;
- browser.storage.sync.set({
- invidiousVolume: invidiousVolume.value,
- });
- },
- 1
+invidiousVolumeElement.addEventListener("input",
+ commonHelper.debounce(() => {
+ document.querySelector("#volume-value").textContent = `${invidiousVolumeElement.value}%`;
+ browser.storage.sync.set({ invidiousVolume: invidiousVolumeElement.value });
+ }, 1)
);
-invidiousVolume.addEventListener("input", invidiousVolumeChange);
-invidiousPlayerStyle.addEventListener("change", (event) => {
+invidiousPlayerStyleElement.addEventListener("change", (event) => {
browser.storage.sync.set({
- invidiousPlayerStyle: event.target.options[invidiousPlayerStyle.selectedIndex].value,
+ invidiousPlayerStyle: event.target.options[invidiousPlayerStyleElement.selectedIndex].value,
});
});
-const invidiousSubtitlesChange = commonHelper.debounce(
- () => {
- browser.storage.sync.set({ invidiousSubtitles: invidiousSubtitles.value });
- },
- 500
+invidiousSubtitlesElement.addEventListener("input",
+ commonHelper.debounce(() => {
+ browser.storage.sync.set({ invidiousSubtitles: invidiousSubtitlesElement.value });
+ }, 500)
);
-invidiousSubtitles.addEventListener("input", invidiousSubtitlesChange);
-invidiousAutoplay.addEventListener(
- "change",
- (event) => {
- browser.storage.sync.set({ invidiousAutoplay: event.target.checked });
- }
-);
+invidiousAutoplayElement.addEventListener("change", (event) => {
+ browser.storage.sync.set({ invidiousAutoplay: event.target.checked });
+});
-const invidiousRandomPoolChange = commonHelper.debounce(
- () => {
- browser.storage.sync.set({ invidiousRandomPool: invidiousRandomPool.value });
- },
- 500
+invidiousRandomPool.addEventListener("input",
+ commonHelper.debounce(() => {
+ browser.storage.sync.set({ invidiousRandomPool: invidiousRandomPool.value.split("\n") });
+ }, 500)
);
-invidiousRandomPool.addEventListener("input", invidiousRandomPoolChange);
-
-useFreeTube.addEventListener("change", (event) => {
+useFreeTubeElement.addEventListener("change", (event) => {
browser.storage.sync.set({ useFreeTube: event.target.checked });
});
-alwaysProxy.addEventListener("change", (event) => {
+alwaysProxyElement.addEventListener("change", (event) => {
browser.storage.sync.set({ alwaysProxy: event.target.checked });
});
-onlyEmbeddedVideo.addEventListener("change", (event) => {
+onlyEmbeddedVideoElement.addEventListener("change", (event) => {
browser.storage.sync.set({ onlyEmbeddedVideo: event.target.checked });
});
-videoQuality.addEventListener("change", (event) => {
- browser.storage.sync.set({
- videoQuality: event.target.options[videoQuality.selectedIndex].value,
- });
-}); \ No newline at end of file
+videoQualityElement.addEventListener("change", (event) => {
+ browser.storage.sync.set({ videoQuality: event.target.options[videoQualityElement.selectedIndex].value });
+});
+
+browser.storage.onChanged.addListener((changes) => {
+ if ("invidiousRandomPool" in changes)
+ invidiousRandomPool.value = changes.invidiousRandomPool.newValue;
+}) \ No newline at end of file