async function toggleState(setting_name, new_value, element_id) { // Show spinner qs(`#${element_id}`).parentNode.querySelector(".spinner").classList.remove("hidden"); // Send request const form = new FormData(); form.append("setting_name", setting_name); form.append("value", new_value); 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 const add_function = new_value ? "toggleState('ACCOUNT_REGISTRATION', false, this.id)" : "toggleState('ACCOUNT_REGISTRATION', true, this.id)"; qs(`#${element_id}`).removeAttribute("onclick"); qs(`#${element_id}`).setAttribute("onclick", add_function); } }