From 3660ceb47a52446e44f06c22ffe833edab112dd2 Mon Sep 17 00:00:00 2001 From: NimBold Date: Sun, 21 Jun 2026 14:28:21 +0330 Subject: [PATCH] fix: resolve scheduler infinite loop and frozen delete modal bugs --- src-tauri/src/scheduler.rs | 12 ++++++++---- src/App.tsx | 7 +++++-- src/components/SchedulerView.tsx | 20 ++++++++++++-------- src/store/useDownloadStore.ts | 3 +-- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src-tauri/src/scheduler.rs b/src-tauri/src/scheduler.rs index 6bf6b76..6fe53a3 100644 --- a/src-tauri/src/scheduler.rs +++ b/src-tauri/src/scheduler.rs @@ -35,8 +35,10 @@ pub fn spawn_scheduler(app_handle: tauri::AppHandle) { state.insert("schedulerLastStartKey".to_string(), serde_json::json!(key)); state.insert("schedulerRunning".to_string(), serde_json::json!(true)); }); - - let _ = app_handle.emit("schedule-trigger", "start"); + let _ = app_handle.emit("schedule-trigger", serde_json::json!({ + "action": "start", + "key": key + })); } if scheduler.stop_time_enabled @@ -48,8 +50,10 @@ pub fn spawn_scheduler(app_handle: tauri::AppHandle) { state.insert("schedulerLastStopKey".to_string(), serde_json::json!(key)); state.insert("schedulerRunning".to_string(), serde_json::json!(false)); }); - - let _ = app_handle.emit("schedule-trigger", "stop"); + let _ = app_handle.emit("schedule-trigger", serde_json::json!({ + "action": "stop", + "key": key + })); } } } diff --git a/src/App.tsx b/src/App.tsx index 8bdf888..a30d503 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -218,10 +218,13 @@ function App() { useEffect(() => { const unlisten = listen('schedule-trigger', async (event) => { const state = useSettingsStore.getState(); - if (event.payload === 'start') { + const payload = event.payload as any; + if (payload.action === 'start') { + state.setSchedulerLastStartKey(payload.key); const started = await useDownloadStore.getState().startQueue(MAIN_QUEUE_ID); state.setSchedulerRunning(started > 0); - } else if (event.payload === 'stop') { + } else if (payload.action === 'stop') { + state.setSchedulerLastStopKey(payload.key); await useDownloadStore.getState().pauseQueue(MAIN_QUEUE_ID); state.setSchedulerRunning(false); } diff --git a/src/components/SchedulerView.tsx b/src/components/SchedulerView.tsx index deb433c..dac9b19 100644 --- a/src/components/SchedulerView.tsx +++ b/src/components/SchedulerView.tsx @@ -180,15 +180,19 @@ export default function SchedulerView() {
-