tuanchris 3 周之前
父节点
当前提交
7438dae9f7
共有 1 个文件被更改,包括 12 次插入5 次删除
  1. 12 5
      frontend/src/pages/LEDPage.tsx

+ 12 - 5
frontend/src/pages/LEDPage.tsx

@@ -353,19 +353,26 @@ export function LEDPage() {
     }
   }
 
-  const saveIdleTimeout = async () => {
+  const saveIdleTimeout = async (enabled?: boolean, minutes?: number) => {
+    const finalEnabled = enabled !== undefined ? enabled : idleTimeoutEnabled
+    const finalMinutes = minutes !== undefined ? minutes : idleTimeoutMinutes
     try {
       await fetch('/api/dw_leds/idle_timeout', {
         method: 'POST',
         headers: { 'Content-Type': 'application/json' },
-        body: JSON.stringify({ enabled: idleTimeoutEnabled, minutes: idleTimeoutMinutes }),
+        body: JSON.stringify({ enabled: finalEnabled, minutes: finalMinutes }),
       })
-      toast.success(`Idle timeout ${idleTimeoutEnabled ? 'enabled' : 'disabled'}`)
+      toast.success(`Idle timeout ${finalEnabled ? 'enabled' : 'disabled'}`)
     } catch (error) {
       toast.error('Failed to save idle timeout')
     }
   }
 
+  const handleIdleTimeoutToggle = async (checked: boolean) => {
+    setIdleTimeoutEnabled(checked)
+    await saveIdleTimeout(checked, idleTimeoutMinutes)
+  }
+
   const formatEffectSettings = (settings: EffectSettings | null) => {
     if (!settings) return 'Not configured'
     const effectName = effects.find((e) => e[0] === settings.effect_id)?.[1] || settings.effect_id
@@ -626,7 +633,7 @@ export function LEDPage() {
                 <span className="text-sm text-muted-foreground">Enable timeout</span>
                 <Switch
                   checked={idleTimeoutEnabled}
-                  onCheckedChange={(checked) => setIdleTimeoutEnabled(checked)}
+                  onCheckedChange={handleIdleTimeoutToggle}
                 />
               </div>
               {idleTimeoutEnabled && (
@@ -640,7 +647,7 @@ export function LEDPage() {
                     className="w-20"
                   />
                   <span className="text-sm text-muted-foreground flex-1">minutes</span>
-                  <Button size="sm" onClick={saveIdleTimeout}>
+                  <Button size="sm" onClick={() => saveIdleTimeout()}>
                     Save
                   </Button>
                 </div>