aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/assets/javascripts/helpers/common.js99
-rw-r--r--src/pages/options/youtube/invidious.js100
-rw-r--r--src/pages/options/youtube/piped.js92
3 files changed, 118 insertions, 173 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js
index 313808a9..5ff47976 100644
--- a/src/assets/javascripts/helpers/common.js
+++ b/src/assets/javascripts/helpers/common.js
@@ -23,7 +23,7 @@ function updateInstances() {
if (request.status === 200) {
const instances = JSON.parse(request.responseText);
- youtubeHelper.setInvidiousRedirects(instances.invidious);
+ nameHelper.setInvidiousRedirects(instances.invidious);
twitterHelper.setRedirects(instances.nitter);
@@ -50,8 +50,105 @@ function isFirefox() {
return typeof InstallTrigger !== "undefined";
}
+function processDefaultCustomInstances(
+ name,
+ nameHelper,
+ document,
+ getNameRedirectsChecks,
+ setNameRedirectsChecks,
+ getNameCustomRedirects,
+ setNameCustomRedirects
+) {
+
+ let nameCustomInstances = [];
+ let nameCheckListElement = document.getElementById(`${name}-checklist`);
+ let nameDefaultRedirects;
+
+ function calcNameCheckBoxes() {
+ let isTrue = true;
+ for (const item of nameHelper.getRedirects()[name].normal)
+ if (!nameDefaultRedirects.includes(item)) {
+ isTrue = false;
+ break;
+ }
+ for (const element of nameCheckListElement.getElementsByTagName('input'))
+ element.checked = nameDefaultRedirects.includes(element.id)
+ document.getElementById(`${name}-toogle-all`).checked = isTrue;
+ }
+
+ nameDefaultRedirects = getNameRedirectsChecks();
+ nameCheckListElement.innerHTML =
+ [
+ `<div>Toggle All<input type="checkbox" id="${name}-toogle-all" /></div>`,
+ ...nameHelper.getRedirects()[name].normal.map((x) => `<div>${x}<input type="checkbox" id="${x}" /></div>`),
+ ].join('\n<hr>\n');
+
+ calcNameCheckBoxes();
+ document.getElementById(`${name}-toogle-all`).addEventListener("change", (event) => {
+ if (event.target.checked)
+ nameDefaultRedirects = [...nameHelper.getRedirects()[name].normal];
+ else
+ nameDefaultRedirects = [];
+ setNameRedirectsChecks(nameDefaultRedirects);
+ calcNameCheckBoxes();
+ });
+
+ for (let element of nameCheckListElement.getElementsByTagName('input')) {
+ if (element.id != `${name}-toogle-all`)
+ document.getElementById(element.id).addEventListener("change", (event) => {
+ if (event.target.checked)
+ nameDefaultRedirects.push(element.id)
+ else {
+ let index = nameDefaultRedirects.indexOf(element.id);
+ if (index > -1) nameDefaultRedirects.splice(index, 1);
+ }
+ setNameRedirectsChecks(nameDefaultRedirects);
+ calcNameCheckBoxes();
+ });
+ }
+
+ nameCustomInstances = getNameCustomRedirects();
+ function calcNameCustomInstances() {
+ document.getElementById(`${name}-custom-checklist`).innerHTML =
+ nameCustomInstances.map(
+ (x) => `<div>${x}<button class="add" id="clear-${x}">
+ <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
+ fill="currentColor">
+ <path d="M0 0h24v24H0V0z" fill="none" />
+ <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" />
+ </svg>
+ </button>
+ </div>
+ <hr>`
+ ).join('\n');
+
+ for (const item of nameCustomInstances) {
+ document.getElementById(`clear-${item}`).addEventListener("click", () => {
+ let index = nameCustomInstances.indexOf(item);
+ if (index > -1) nameCustomInstances.splice(index, 1);
+ setNameCustomRedirects(nameCustomInstances);
+ calcNameCustomInstances();
+ });
+ }
+ }
+ calcNameCustomInstances();
+ 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)
+ setNameCustomRedirects(nameCustomInstances);
+ }
+ calcNameCustomInstances();
+ }
+ })
+}
+
export default {
getRandomInstance,
updateInstances,
isFirefox,
+ processDefaultCustomInstances,
};
diff --git a/src/pages/options/youtube/invidious.js b/src/pages/options/youtube/invidious.js
index e1b26efc..70b25428 100644
--- a/src/pages/options/youtube/invidious.js
+++ b/src/pages/options/youtube/invidious.js
@@ -1,4 +1,5 @@
import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js";
+import commonHelper from "../../../assets/javascripts/helpers/common.js";
let invidiousAlwaysProxyElement = document.getElementById("invidious-always-proxy");
invidiousAlwaysProxyElement.addEventListener("change",
@@ -32,95 +33,14 @@ youtubeHelper.init().then(() => {
invidiousSubtitlesElement.value = youtubeHelper.getInvidiousSubtitles();
persistInvidiousPrefsElement.checked = youtubeHelper.getPersistInvidiousPrefs();
-
- invidiousDefaultRedirects = youtubeHelper.getInvidiousRedirectsChecks();
- invidiousCheckListElement.innerHTML =
- [
- '<div>Toggle All<input type="checkbox" id="invidious-toogle-all" /></div>',
- ...youtubeHelper.getRedirects().invidious.normal.map((x) => `<div>${x}<input type="checkbox" id="${x}" /></div>`),
- ].join('\n<hr>\n');
-
- calcInvidiousCheckBoxes();
- document.getElementById('invidious-toogle-all').addEventListener("change", (event) => {
- if (event.target.checked)
- invidiousDefaultRedirects = [...youtubeHelper.getRedirects().invidious.normal];
- else
- invidiousDefaultRedirects = [];
- youtubeHelper.setInvidiousRedirectsChecks(invidiousDefaultRedirects);
- calcInvidiousCheckBoxes();
- });
-
- for (let element of invidiousCheckListElement.getElementsByTagName('input')) {
- if (element.id != 'invidious-toogle-all')
- document.getElementById(element.id).addEventListener("change", (event) => {
- if (event.target.checked)
- invidiousDefaultRedirects.push(element.id)
- else {
- let index = invidiousDefaultRedirects.indexOf(element.id);
- if (index > -1) invidiousDefaultRedirects.splice(index, 1);
- }
- youtubeHelper.setInvidiousRedirectsChecks(invidiousDefaultRedirects);
- calcInvidiousCheckBoxes();
- });
- }
-
- invidiousCustomInstances = youtubeHelper.getInvidiousCustomRedirects();
- calcInvidiousCustomInstances();
+ commonHelper.processDefaultCustomInstances(
+ 'invidious',
+ youtubeHelper,
+ document,
+ youtubeHelper.getInvidiousRedirectsChecks,
+ youtubeHelper.setInvidiousRedirectsChecks,
+ youtubeHelper.getInvidiousCustomRedirects,
+ youtubeHelper.setInvidiousCustomRedirects
+ )
});
-
-let invidiousCustomInstanceInput = document.getElementById("invidious-custom-instance");
-let invidiousCustomInstances = [];
-
-let invidiousCheckListElement = document.getElementById("invidious-checklist");
-
-
-let invidiousDefaultRedirects;
-
-function calcInvidiousCheckBoxes() {
- let isTrue = true;
- for (const item of youtubeHelper.getRedirects().invidious.normal)
- if (!invidiousDefaultRedirects.includes(item)) {
- isTrue = false;
- break;
- }
- for (const element of invidiousCheckListElement.getElementsByTagName('input'))
- element.checked = invidiousDefaultRedirects.includes(element.id)
- document.getElementById('invidious-toogle-all').checked = isTrue;
-}
-
-function calcInvidiousCustomInstances() {
- document.getElementById("invidious-custom-checklist").innerHTML =
- invidiousCustomInstances.map(
- (x) => `<div>${x}<button class="add" id="clear-${x}">
- <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
- fill="currentColor">
- <path d="M0 0h24v24H0V0z" fill="none" />
- <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" />
- </svg>
- </button>
- </div>
- <hr>`
- ).join('\n');
-
- for (const item of invidiousCustomInstances) {
- document.getElementById(`clear-${item}`).addEventListener("click", () => {
- let index = invidiousCustomInstances.indexOf(item);
- if (index > -1) invidiousCustomInstances.splice(index, 1);
- youtubeHelper.setInvidiousCustomRedirects(invidiousCustomInstances);
- calcInvidiousCustomInstances();
- });
- }
-}
-
-document.getElementById("custom-invidious-instance-form").addEventListener("submit", (event) => {
- event.preventDefault();
- let val = invidiousCustomInstanceInput.value
- if (invidiousCustomInstanceInput.validity.valid && !youtubeHelper.getRedirects().invidious.normal.includes(val)) {
- if (!invidiousCustomInstances.includes(val)) {
- invidiousCustomInstances.push(val)
- youtubeHelper.setInvidiousCustomRedirects(invidiousCustomInstances);
- }
- calcInvidiousCustomInstances();
- }
-}) \ No newline at end of file
diff --git a/src/pages/options/youtube/piped.js b/src/pages/options/youtube/piped.js
index 8f12f8ae..ed425237 100644
--- a/src/pages/options/youtube/piped.js
+++ b/src/pages/options/youtube/piped.js
@@ -1,94 +1,22 @@
import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js";
+import commonHelper from "../../../assets/javascripts/helpers/common.js";
youtubeHelper.init().then(() => {
-
- pipedDefaultRedirects = youtubeHelper.getPipedRedirectsChecks();
- pipedCheckListElement.innerHTML =
- [
- '<div>Toggle All<input type="checkbox" id="piped-toogle-all" /></div>',
- ...youtubeHelper.getRedirects().piped.normal.map((x) => `<div>${x}<input type="checkbox" id="${x}" /></div>`),
- ].join('\n<hr>\n');
-
- calcPipedCheckBoxes();
- document.getElementById('piped-toogle-all').addEventListener("change", (event) => {
- if (event.target.checked)
- pipedDefaultRedirects = [...youtubeHelper.getRedirects().piped.normal];
- else
- pipedDefaultRedirects = [];
- youtubeHelper.setPipedRedirectsChecks(pipedDefaultRedirects);
- calcPipedCheckBoxes();
- });
-
- for (let element of pipedCheckListElement.getElementsByTagName('input')) {
- if (element.id != 'piped-toogle-all')
- document.getElementById(element.id).addEventListener("change", (event) => {
- if (event.target.checked)
- pipedDefaultRedirects.push(element.id)
- else {
- let index = pipedDefaultRedirects.indexOf(element.id);
- if (index > -1) pipedDefaultRedirects.splice(index, 1);
- }
- youtubeHelper.setPipedRedirectsChecks(pipedDefaultRedirects);
- calcPipedCheckBoxes();
- });
- }
-
- pipedCustomInstances = youtubeHelper.getPipedCustomRedirects();
- calcPipedCustomInstances();
+ commonHelper.processDefaultCustomInstances(
+ 'piped',
+ youtubeHelper,
+ document,
+ youtubeHelper.getPipedRedirectsChecks,
+ youtubeHelper.setPipedRedirectsChecks,
+ youtubeHelper.getPipedCustomRedirects,
+ youtubeHelper.setPipedCustomRedirects
+ )
});
-let pipedCustomInstanceInput = document.getElementById("piped-custom-instance");
-let pipedCustomInstances = [];
-let pipedCheckListElement = document.getElementById("piped-checklist");
-let pipedDefaultRedirects;
-function calcPipedCheckBoxes() {
- let isTrue = true;
- for (const item of youtubeHelper.getRedirects().piped.normal)
- if (!pipedDefaultRedirects.includes(item)) {
- isTrue = false;
- break;
- }
- for (const element of pipedCheckListElement.getElementsByTagName('input'))
- element.checked = pipedDefaultRedirects.includes(element.id)
- document.getElementById('piped-toogle-all').checked = isTrue;
-}
-function calcPipedCustomInstances() {
- document.getElementById("piped-custom-checklist").innerHTML =
- pipedCustomInstances.map(
- (x) => `<div>${x}<button class="add" id="clear-${x}">
- <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px"
- fill="currentColor">
- <path d="M0 0h24v24H0V0z" fill="none" />
- <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" />
- </svg>
- </button>
- </div>
- <hr>`
- ).join('\n');
- for (const item of pipedCustomInstances) {
- document.getElementById(`clear-${item}`).addEventListener("click", () => {
- let index = pipedCustomInstances.indexOf(item);
- if (index > -1) pipedCustomInstances.splice(index, 1);
- youtubeHelper.setPipedCustomRedirects(pipedCustomInstances);
- calcPipedCustomInstances();
- });
- }
-}
-document.getElementById("custom-piped-instance-form").addEventListener("submit", (event) => {
- event.preventDefault();
- let val = pipedCustomInstanceInput.value
- if (pipedCustomInstanceInput.validity.valid && !youtubeHelper.getRedirects().piped.normal.includes(val)) {
- if (!pipedCustomInstances.includes(val)) {
- pipedCustomInstances.push(val)
- youtubeHelper.setPipedCustomRedirects(pipedCustomInstances);
- }
- calcPipedCustomInstances();
- }
-}) \ No newline at end of file