/*
* Proxatore, a proxy for viewing and embedding content from various platforms.
* Copyright (C) 2025 OctoSpacc
*
*/
(function(){
const groupLink = (group) => `?proxatore-group=${encodeURIComponent(JSON.stringify(group))}`;
const groupRedirect = (group) => location.href = groupLink(group);
const groupPersist = (group) => localStorage.setItem('proxatore-group', group.length ? JSON.stringify(group) : null);
const groupUpdate = (group) => {
groupPersist(group);
groupRedirect(group);
};
const moveItem = (data, from, to) => data.splice(to, 0, data.splice(from, 1)[0]);
const openingGroup = JSON.parse((new URLSearchParams(location.search)).get('proxatore-group'));
const editingGroup = JSON.parse(localStorage.getItem('proxatore-group'));
let group = openingGroup || editingGroup;
if (group) {
document.querySelector('form').innerHTML += 'Results Group
';
if (editingGroup) {
ProxatoreGroup.open = true;
ProxatoreGroup.querySelector('summary').innerHTML = `Results Group`;
}
ProxatoreGroup.querySelector('summary').innerHTML += ` `;
ProxatoreGroup.querySelector('summary button').addEventListener('click', (ev) => {
ev.preventDefault();
groupUpdate(editingGroup ? [] : group);
});
ProxatoreGroup.querySelector('ul').innerHTML = Object.keys(group).map(id => `
${group[id]}
`).join('');
ProxatoreGroup.querySelectorAll('ul button.remove').forEach(button => button.addEventListener('click', (ev) => {
ev.preventDefault();
group.splice(button.parentElement.dataset.id, 1);
groupUpdate(group);
}));
ProxatoreGroup.querySelectorAll('ul button.up').forEach(button => button.addEventListener('click', (ev) => {
ev.preventDefault();
const id = button.parentElement.dataset.id;
moveItem(group, id, id-1);
groupUpdate(group);
}));
ProxatoreGroup.querySelectorAll('ul button.down').forEach(button => button.addEventListener('click', (ev) => {
ev.preventDefault();
const id = button.parentElement.dataset.id;
moveItem(group, id, id+1);
groupUpdate(group);
}));
ProxatoreGroup.querySelector('ul li:first-of-type button.up').disabled = ProxatoreGroup.querySelector('ul li:last-of-type button.down').disabled = true;
} else {
group = [];
}
document.querySelectorAll('.actions').forEach(item => {
item.innerHTML += ``;
item.querySelector('button').addEventListener('click', () => {
group.push(item.querySelector('a.internal').getAttribute('href'));
groupUpdate(group);
});
});
})();