diff --git a/desktop/src-tauri/src/prevent_sleep.rs b/desktop/src-tauri/src/prevent_sleep.rs index 61e51f3f..44ab2185 100644 --- a/desktop/src-tauri/src/prevent_sleep.rs +++ b/desktop/src-tauri/src/prevent_sleep.rs @@ -7,7 +7,7 @@ use tauri::{AppHandle, Emitter}; #[derive(Default)] pub struct PreventSleepState { assertion_id: Option, - timer_abort: Option, + timer_handle: Option>, } // ── macOS implementation ──────────────────────────────────────────────────── @@ -111,12 +111,12 @@ pub fn acquire( if guard.assertion_id.is_some() { let handle = app_handle.clone(); let timer_state = Arc::clone(state); - let timer_task = tokio::spawn(async move { + let timer_task = tauri::async_runtime::spawn(async move { tokio::time::sleep(std::time::Duration::from_secs(CAP_SECONDS)).await; release(&timer_state); let _ = handle.emit("prevent-sleep-expired", ()); }); - guard.timer_abort = Some(timer_task.abort_handle()); + guard.timer_handle = Some(timer_task); } Ok(()) @@ -129,8 +129,8 @@ pub fn release(state: &Arc>) { Err(_) => return, }; - if let Some(abort) = guard.timer_abort.take() { - abort.abort(); + if let Some(handle) = guard.timer_handle.take() { + handle.abort(); } #[cfg(target_os = "macos")] diff --git a/desktop/src/features/agents/usePreventSleep.ts b/desktop/src/features/agents/usePreventSleep.ts index 1a4e11a3..ff5797b2 100644 --- a/desktop/src/features/agents/usePreventSleep.ts +++ b/desktop/src/features/agents/usePreventSleep.ts @@ -56,7 +56,10 @@ function usePreventSleepInternal() { [agents], ); - const active = enabled && hasRunningAgents; + // Listen for 4-hour expiry + const [expired, setExpired] = React.useState(false); + + const active = enabled && hasRunningAgents && !expired; const setEnabled = React.useCallback((value: boolean) => { writePreference(value); @@ -67,9 +70,6 @@ function usePreventSleepInternal() { React.useEffect(() => { void setPreventSleepActive(active); }, [active]); - - // Listen for 4-hour expiry - const [expired, setExpired] = React.useState(false); React.useEffect(() => { const unlisten = listen("prevent-sleep-expired", () => { setExpired(true);