From 612cd02b1569ef514a1e45fde82b224f01216c3e Mon Sep 17 00:00:00 2001 From: Jonathan Date: Sat, 11 Jul 2026 17:14:37 +0200 Subject: [PATCH] feat: Settings 'Scan library' button + last-result status --- web/src/app/settings/settings-form.tsx | 64 ++++++++++++++++++-------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/web/src/app/settings/settings-form.tsx b/web/src/app/settings/settings-form.tsx index 0df611d..d2c9622 100644 --- a/web/src/app/settings/settings-form.tsx +++ b/web/src/app/settings/settings-form.tsx @@ -22,6 +22,22 @@ export function SettingsForm() { const [tokenSet, setTokenSet] = useState(false); const [keySet, setKeySet] = useState(false); const [saved, setSaved] = useState(false); + const [scanResult, setScanResult] = useState(null); + const [scanRequested, setScanRequested] = useState(false); + + useEffect(() => { + fetch("/api/scan") + .then((r) => r.json()) + .then((s: { result: string | null; requested: boolean }) => { + setScanResult(s.result); + setScanRequested(s.requested); + }); + }, []); + + async function requestScan() { + await fetch("/api/scan", { method: "POST" }); + setScanRequested(true); + } useEffect(() => { fetch("/api/config") @@ -53,24 +69,34 @@ export function SettingsForm() { } return ( -
-
- Qobuz — email/password - - -
-
- Qobuz — auth token (more reliable; overrides email/password) - - -
-
- Soulseek (slskd) - - -
- - {saved ? Saved. : null} -
+ <> +
+
+ Qobuz — email/password + + +
+
+ Qobuz — auth token (more reliable; overrides email/password) + + +
+
+ Soulseek (slskd) + + +
+ + {saved ? Saved. : null} +
+
+

Library

+

Scan /music and record what's already on disk as owned + monitored.

+ + {scanResult ?

Last scan: {scanResult}

: null} +
+ ); }