diff --git a/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx b/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx index afb8ce2e..57bad547 100644 --- a/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx +++ b/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx @@ -5,6 +5,7 @@ function AutoLaunchSettings() { const [openAtLogin, setOpenAtLogin] = useState(false); const [startMinimized, setStartMinimized] = useState(true); const [loading, setLoading] = useState(true); + const [busy, setBusy] = useState(false); useEffect(() => { window.backspace?.getAutoLaunchSettings().then((settings) => { @@ -15,24 +16,30 @@ function AutoLaunchSettings() { }, []); const handleOpenAtLoginChange = async (enabled: boolean) => { - setOpenAtLogin(enabled); + if (busy) return; + setBusy(true); try { const result = await window.backspace!.setAutoLaunchSettings({ openAtLogin: enabled }); setOpenAtLogin(result.openAtLogin); setStartMinimized(result.startMinimized); - } catch { - setOpenAtLogin(!enabled); + } catch (err) { + console.error('[autoLaunch] setAutoLaunchSettings(openAtLogin) failed:', err); + } finally { + setBusy(false); } }; const handleStartMinimizedChange = async (enabled: boolean) => { - setStartMinimized(enabled); + if (busy) return; + setBusy(true); try { const result = await window.backspace!.setAutoLaunchSettings({ startMinimized: enabled }); setOpenAtLogin(result.openAtLogin); setStartMinimized(result.startMinimized); - } catch { - setStartMinimized(!enabled); + } catch (err) { + console.error('[autoLaunch] setAutoLaunchSettings(startMinimized) failed:', err); + } finally { + setBusy(false); } }; @@ -47,7 +54,7 @@ function AutoLaunchSettings() { Automatically launch Backspace when you log in - +
@@ -56,7 +63,7 @@ function AutoLaunchSettings() { Start hidden in the system tray instead of showing the window
- + ); diff --git a/packages/web/src/components/ui/Toggle.tsx b/packages/web/src/components/ui/Toggle.tsx index db6a8f86..3745c2f8 100644 --- a/packages/web/src/components/ui/Toggle.tsx +++ b/packages/web/src/components/ui/Toggle.tsx @@ -1,16 +1,18 @@ interface ToggleProps { enabled: boolean; onChange: (enabled: boolean) => void; + disabled?: boolean; } -export function Toggle({ enabled, onChange }: ToggleProps) { +export function Toggle({ enabled, onChange, disabled }: ToggleProps) { return (