From 4d0b4ee1c578ed55e3df5d88ecebac6c585b9b0c Mon Sep 17 00:00:00 2001 From: Developer Date: Tue, 7 Apr 2026 06:40:59 -0700 Subject: [PATCH] Add save confirmation and fix saveConfig -> updateConfig - Fixed method call from saveConfig (doesn't exist) to updateConfig - Save button shows "Saving..." while in progress, disabled during save - Green "Settings saved!" message appears on success before closing - Red error message shown on failure - Cancel button disabled during save Co-Authored-By: Claude Opus 4.6 (1M context) --- src/lib/components/Settings.svelte | 32 ++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/lib/components/Settings.svelte b/src/lib/components/Settings.svelte index b06ad37..55a3b62 100644 --- a/src/lib/components/Settings.svelte +++ b/src/lib/components/Settings.svelte @@ -42,6 +42,9 @@ let managedPassword = $state(""); let autoCheckUpdates = $state(true); + let saving = $state(false); + let saveMessage = $state(""); + // Fetched device lists let audioDevices = $state<{ id: string; name: string }[]>([]); let computeDevices = $state<{ id: string; name: string }[]>([]); @@ -192,11 +195,16 @@ }, }; + saving = true; + saveMessage = ""; try { - await configStore.saveConfig(updates); - onClose(); + await configStore.updateConfig(updates); + saveMessage = "Settings saved!"; + setTimeout(() => onClose(), 600); } catch (err) { console.error("Failed to save settings:", err); + saveMessage = `Error: ${err}`; + saving = false; } } @@ -643,8 +651,13 @@ @@ -788,10 +801,21 @@ .settings-footer { display: flex; + align-items: center; justify-content: flex-end; gap: 8px; padding: 16px 20px; border-top: 1px solid var(--border-color); flex-shrink: 0; } + + .save-message { + margin-right: auto; + font-size: 13px; + color: #4CAF50; + } + + .save-message.error { + color: #f44336; + }