summaryrefslogtreecommitdiff
path: root/src-tauri
diff options
context:
space:
mode:
authorSolstice <solstice@local>2026-06-09 01:14:04 -0700
committerSolstice <solstice@local>2026-06-09 01:14:04 -0700
commitfc7cc972e6171896ef4e648f50951902a5b478fb (patch)
tree3bd5a059e10ff2aa6926625c03b8b67d29d53d25 /src-tauri
parent887c0bc6f968f80ac90220f24bb578438e05708a (diff)
fix: resolve final deadlock and startup sync gap
Diffstat (limited to 'src-tauri')
-rw-r--r--src-tauri/src/lib.rs22
1 files changed, 15 insertions, 7 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;
}
}