summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src-tauri/src/lib.rs22
-rw-r--r--src/hooks/useTimerEvents.ts16
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);
}