From 887c0bc6f968f80ac90220f24bb578438e05708a Mon Sep 17 00:00:00 2001 From: Solstice Date: Tue, 9 Jun 2026 01:10:46 -0700 Subject: fix: resolve final release blockers --- src/store/timerStore.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/store/timerStore.ts') diff --git a/src/store/timerStore.ts b/src/store/timerStore.ts index 6a81e20..79170a4 100644 --- a/src/store/timerStore.ts +++ b/src/store/timerStore.ts @@ -1,3 +1,4 @@ +import { invoke } from '@tauri-apps/api/core'; import { create } from 'zustand'; export type TimerPhase = 'work' | 'short_break' | 'long_break'; @@ -10,6 +11,15 @@ export interface TimerTickPayload { current_task_id: string | null; } +export interface TimerStatus { + phase: TimerPhase; + remaining_secs: number; + total_secs: number; + running: boolean; + session_count: number; + current_task_id: string | null; +} + interface TimerState { phase: TimerPhase; remainingSecs: number; @@ -17,8 +27,10 @@ interface TimerState { running: boolean; sessionCount: number; currentTaskId: string | null; + syncFromBackend: () => Promise; setTimerTick: (payload: TimerTickPayload) => void; setRunning: (running: boolean) => void; + setCurrentTaskId: (currentTaskId: string | null) => void; } export const useTimerStore = create((set) => ({ @@ -29,6 +41,18 @@ export const useTimerStore = create((set) => ({ sessionCount: 0, currentTaskId: null, + syncFromBackend: async () => { + const status = await invoke('get_timer_status'); + set({ + phase: status.phase, + remainingSecs: status.remaining_secs, + totalSecs: status.total_secs, + running: status.running, + sessionCount: status.session_count, + currentTaskId: status.current_task_id, + }); + }, + setTimerTick: (payload) => set({ phase: payload.phase, @@ -39,4 +63,5 @@ export const useTimerStore = create((set) => ({ }), setRunning: (running) => set({ running }), + setCurrentTaskId: (currentTaskId) => set({ currentTaskId }), })); -- cgit v1.3-2-g0d8e