cleanup settings logic

This commit is contained in:
2026-07-14 22:13:23 +00:00
parent 526b2a0ff0
commit 0752394d69
5 changed files with 78 additions and 71 deletions
+50 -19
View File
@@ -1,36 +1,67 @@
import { setAppearance, getSyncSettings, getSearchSettings, getThemeSettings, setSyncSettings, setSearchSettings, setThemeSettings } from "./utils.js";
import { setAppearance, getSetting, setSetting } from "./utils.js";
window.addEventListener("DOMContentLoaded", init);
function init () {
setAppearance();
const { scheme, rate } = getSyncSettings();
if (scheme) {
document.querySelector(`#sync-${scheme}`).checked = true;
}
if (rate) {
document.querySelector("#sync-rate").value = rate;
}
document.querySelectorAll("[id^=sync-]").forEach((v) => {
v.addEventListener("change", handleSettingsChange);
});
document.querySelector(`#sync-${getSetting("sync-scheme")}`).checked = true;
document.querySelector("#sync-rate").value = getSetting("sync-rate");
const search = getSearchSettings();
if (search) {
document.querySelector(`#search-${search}`).checked = true;
}
document.querySelectorAll("[id^=search-]").forEach((v) => {
v.addEventListener("change", handleSettingsChange);
});
document.querySelector(`#search-${getSetting("search-criteria")}`).checked = true;
const theme = getThemeSettings();
if (theme) {
document.querySelector("#appearance-theme").value = theme;
}
document.querySelector("#appearance-theme").addEventListener("change", handleSettingsChange);
document.querySelector("#appearance-theme").value = getSetting("appearance-theme");
document.querySelector("#settings").addEventListener("submit", handleSaveSettings, false);
}
function handleSettingsChange (event) {
event.preventDefault();
const form = new FormData(document.querySelector("#settings"));
const saveBtn = document.querySelector("#save");
if (getSetting("sync-scheme") !== form.get("sync-scheme")) {
saveBtn.classList.remove("disabled");
saveBtn.classList.add("enabled");
console.log("here1")
}
else if (getSetting("sync-rate") !== Number(form.get("sync-rate"))) {
saveBtn.classList.remove("disabled");
saveBtn.classList.add("enabled");
console.log("here2")
}
else if (getSetting("search-criteria") !== form.get("search-criteria")) {
saveBtn.classList.remove("disabled");
saveBtn.classList.add("enabled");
console.log("here3")
}
else if (getSetting("appearance-theme") !== form.get("appearance-theme")) {
saveBtn.classList.remove("disabled");
saveBtn.classList.add("enabled");
console.log("here4")
}
else {
saveBtn.classList.remove("enabled");
saveBtn.classList.add("disabled");
console.log("here5")
}
}
function handleSaveSettings (event) {
event.preventDefault();
const form = new FormData(document.querySelector("#settings"));
setSyncSettings(form.get("sync-scheme"), form.get("sync-rate"));
setSearchSettings(form.get("search-criteria"));
setThemeSettings(form.get("appearance-theme"));
const saveBtn = document.querySelector("#save");
setSetting("sync-scheme", form.get("sync-scheme"));
setSetting("sync-rate", Number(form.get("sync-rate")));
setSetting("search-criteria", form.get("search-criteria"));
setSetting("appearance-theme", form.get("appearance-theme"));
saveBtn.classList.remove("enabled");
saveBtn.classList.add("disabled");
init();
}