Combined the instances methods to one function

This commit is contained in:
ManeraKai 2022-02-06 08:45:12 +03:00
parent 85aadc0eb6
commit 5cc8ed3f60
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
3 changed files with 118 additions and 173 deletions

View File

@ -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,
};

View File

@ -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();
}
})

View File

@ -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();
}
})