2023-09-21 00:41:57 +00:00
|
|
|
async function toggleState(setting_name, new_value, element_id) {
|
|
|
|
// Show spinner
|
|
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.remove("hidden");
|
|
|
|
|
2023-11-08 10:08:40 +00:00
|
|
|
const form = {
|
|
|
|
setting_name: setting_name,
|
|
|
|
value: JSON.stringify(new_value),
|
|
|
|
};
|
2023-09-21 00:41:57 +00:00
|
|
|
|
|
|
|
const response = await request("/setting", "POST", form);
|
|
|
|
|
|
|
|
// Check response for errors
|
|
|
|
if (response.body.success) {
|
|
|
|
qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.add("hidden");
|
|
|
|
|
|
|
|
// Update visual to reflect current setting
|
|
|
|
// Class
|
|
|
|
const add_class = new_value ? "good" : "bad";
|
|
|
|
const remove_class = new_value ? "bad" : "good";
|
|
|
|
qs(`#${element_id}`).classList.remove(remove_class);
|
|
|
|
qs(`#${element_id}`).classList.add(add_class);
|
|
|
|
|
|
|
|
// Text
|
|
|
|
const new_text = new_value ? "Enabled" : "Disabled";
|
|
|
|
qs(`#${element_id}`).children[0].innerText = new_text;
|
|
|
|
|
|
|
|
// Function
|
2023-11-08 10:08:40 +00:00
|
|
|
const add_function = new_value ? `toggleState('${setting_name}', false, this.id)` : `toggleState('${setting_name}', true, this.id)`;
|
2023-09-21 00:41:57 +00:00
|
|
|
qs(`#${element_id}`).removeAttribute("onclick");
|
|
|
|
qs(`#${element_id}`).setAttribute("onclick", add_function);
|
|
|
|
}
|
|
|
|
}
|