From 5cc8ed3f6034a379c29af2388dc59b30751b0f03 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sun, 6 Feb 2022 08:45:12 +0300 Subject: [PATCH] Combined the instances methods to one function --- src/assets/javascripts/helpers/common.js | 99 +++++++++++++++++++++- src/pages/options/youtube/invidious.js | 100 +++-------------------- src/pages/options/youtube/piped.js | 92 +++------------------ 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 = + [ + `
Toggle All
`, + ...nameHelper.getRedirects()[name].normal.map((x) => `
${x}
`), + ].join('\n
\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) => `
${x} +
+
` + ).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 = - [ - '
Toggle All
', - ...youtubeHelper.getRedirects().invidious.normal.map((x) => `
${x}
`), - ].join('\n
\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) => `
${x} -
-
` - ).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 = - [ - '
Toggle All
', - ...youtubeHelper.getRedirects().piped.normal.map((x) => `
${x}
`), - ].join('\n
\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) => `
${x} -
-
` - ).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