From d4f82a7fc5ce731e921c5f115463bab7a1a15c69 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sun, 6 Feb 2022 03:55:53 +0300 Subject: readded default and custom instances. Needs some work --- src/pages/options/youtube/youtube.html | 33 +++++++++- src/pages/options/youtube/youtube.js | 108 +++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+), 1 deletion(-) (limited to 'src/pages/options') diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html index d13da9cc..a9bb6c63 100644 --- a/src/pages/options/youtube/youtube.html +++ b/src/pages/options/youtube/youtube.html @@ -129,13 +129,44 @@

Subtitles

- +

Persist preferences (as cookie)

+ +
+ +
+

Default Instances

+
+
+
+ +
+ +
+

Custom Instances

+
+ + +
+
+ + +
+
+ +
+
diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js index f4caf923..595006fd 100644 --- a/src/pages/options/youtube/youtube.js +++ b/src/pages/options/youtube/youtube.js @@ -96,6 +96,10 @@ invidiousVideoQualityElement.addEventListener("change", ); +let invidiousCheckListElement = document.getElementById("checklist"); + + + youtubeHelper.init().then(() => { disableYoutubeElement.checked = !youtubeHelper.getDisableYoutube(); invidiousThemeElement.checked = youtubeHelper.getInvidiousTheme(); @@ -110,10 +114,114 @@ youtubeHelper.init().then(() => { invidiousAutoplayElement.checked = youtubeHelper.getInvidiousAutoplay(); let frontend = youtubeHelper.getFrontend() youtubeFrontendElement.value = frontend; + invidiousCheckListElement.innerHTML = + [ + '
Toggle All
', + ...youtubeHelper.getRedirects().invidious.normal.map( + (x) => `
${x}
`), + ].join('\n
\n') changeFrontendsSettings(frontend); + + 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; + } + 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(); + } + ); + } + checkToggleAll(); + + + mightyInvidiousCustomInstances = youtubeHelper.getInvidiousCustomRedirects(); + calcCustom(); + }); +let invidiousCustomInstanceElement = document.getElementById("invidious-custom-instance") +let mightyInvidiousCustomInstances = [] +let invidiousCustomCheckListElement = document.getElementById("custom-checklist"); +let customFormElement = document.getElementById("custom-instance-form"); + +function calcCustom() { + invidiousCustomCheckListElement.innerHTML = [ + ...mightyInvidiousCustomInstances.map( + (x) => `
${x} +
+
`), + ].join('\n'); + + for (const item of mightyInvidiousCustomInstances) { + let myButton = document.getElementById(`clear-${item}`); + myButton.addEventListener("click", () => { + let index = mightyInvidiousCustomInstances.indexOf(item); + if (index > -1) mightyInvidiousCustomInstances.splice(index, 1); + youtubeHelper.setInvidiousCustomRedirects(mightyInvidiousCustomInstances); + calcCustom(); + }); + } +} +customFormElement.addEventListener("submit", (event) => { + event.preventDefault(); + if (invidiousCustomInstanceElement.validity.valid) { + let val = invidiousCustomInstanceElement.value + if (!mightyInvidiousCustomInstances.includes(val)) { + mightyInvidiousCustomInstances.push(val) + youtubeHelper.setInvidiousCustomRedirects(mightyInvidiousCustomInstances); + } + calcCustom(); + } +}) -- cgit 1.4.1