diff options
-rw-r--r-- | src/assets/javascripts/helpers/common.js | 99 | ||||
-rw-r--r-- | src/pages/options/youtube/invidious.js | 100 | ||||
-rw-r--r-- | 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 = + [ + `<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 |