import { loadSettings, saveSettings } from "../shared/settings"; import type { FilterMode, Settings } from "../shared/types"; import "./style.css"; const form = document.querySelector("#settings"); const threshold = document.querySelector("#threshold"); const thresholdValue = document.querySelector("#threshold-value"); const mode = document.querySelector("#filter-mode"); const showScore = document.querySelector("#show-score"); const status = document.querySelector("#status"); void loadSettings().then((settings) => { threshold!.value = String(settings.threshold); mode!.value = settings.filterMode; showScore!.checked = settings.showScore; for (const site of ["reddit", "twitter", "facebook"] as const) document.querySelector(`#site-${site}`)!.checked = settings.enabledSites[site]; updateThresholdLabel(); }); threshold?.addEventListener("input", updateThresholdLabel); form?.addEventListener("submit", async (event) => { event.preventDefault(); const settings: Partial = { threshold: Number(threshold?.value), filterMode: mode?.value as FilterMode, showScore: showScore?.checked, enabledSites: { reddit: document.querySelector("#site-reddit")!.checked, twitter: document.querySelector("#site-twitter")!.checked, facebook: document.querySelector("#site-facebook")!.checked } }; await saveSettings(settings); if (status) { status.textContent = "Saved"; setTimeout(() => { status.textContent = ""; }, 1500); } }); function updateThresholdLabel(): void { if (thresholdValue && threshold) thresholdValue.textContent = `${Math.round(Number(threshold.value) * 100)}%`; }