diff options
| -rw-r--r-- | src-tauri/src/lib.rs | 22 | ||||
| -rw-r--r-- | src/hooks/useTimerEvents.ts | 16 |
2 files changed, 21 insertions, 17 deletions
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index aff41cc..2b359eb 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -111,17 +111,25 @@ fn skip_phase( ) -> Result<(), String> { use tauri::Emitter; let mut ts = timer.0.lock().unwrap(); - let app_data = data.data.lock().unwrap(); - let s = &app_data.settings; + let (work_duration_secs, short_break_secs, long_break_secs, sessions_before_long_break) = { + let app_data = data.data.lock().unwrap(); + let settings = &app_data.settings; + ( + settings.work_duration_secs, + settings.short_break_secs, + settings.long_break_secs, + settings.sessions_before_long_break, + ) + }; match ts.phase { TimerPhase::Work => { ts.session_count += 1; let (next_phase, next_secs) = - if ts.session_count % s.sessions_before_long_break == 0 { - (TimerPhase::LongBreak, s.long_break_secs) + if ts.session_count % sessions_before_long_break == 0 { + (TimerPhase::LongBreak, long_break_secs) } else { - (TimerPhase::ShortBreak, s.short_break_secs) + (TimerPhase::ShortBreak, short_break_secs) }; ts.phase = next_phase; ts.total_secs = next_secs; @@ -129,8 +137,8 @@ fn skip_phase( } TimerPhase::ShortBreak | TimerPhase::LongBreak => { ts.phase = TimerPhase::Work; - ts.total_secs = s.work_duration_secs; - ts.remaining_secs = s.work_duration_secs; + ts.total_secs = work_duration_secs; + ts.remaining_secs = work_duration_secs; } } diff --git a/src/hooks/useTimerEvents.ts b/src/hooks/useTimerEvents.ts index a0d5154..2142273 100644 --- a/src/hooks/useTimerEvents.ts +++ b/src/hooks/useTimerEvents.ts @@ -29,16 +29,6 @@ export function useTimerEvents( let unlisteners: Array<() => void> = []; async function setup() { - // Bootstrap initial state from backend - try { - await syncFromBackend(); - if (cancelled) return; - } catch (e) { - console.error('Failed to get timer status:', e); - } - - if (cancelled) return; - // Register all listeners atomically try { const [unlistenTick, unlistenCompleted, unlistenPhaseChanged] = await Promise.all([ @@ -75,6 +65,12 @@ export function useTimerEvents( } unlisteners = [unlistenTick, unlistenCompleted, unlistenPhaseChanged]; + + try { + await syncFromBackend(); + } catch (e) { + console.error('Failed to get timer status:', e); + } } catch (e) { console.error('Failed to register timer listeners:', e); } |
