diff options
Diffstat (limited to 'src/store/settingsStore.ts')
| -rw-r--r-- | src/store/settingsStore.ts | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/store/settingsStore.ts b/src/store/settingsStore.ts new file mode 100644 index 0000000..ea7be34 --- /dev/null +++ b/src/store/settingsStore.ts @@ -0,0 +1,33 @@ +import { create } from 'zustand'; +import { invoke } from '@tauri-apps/api/core'; + +export interface Settings { + work_duration_secs: number; + short_break_secs: number; + long_break_secs: number; + sessions_before_long_break: number; +} + +interface SettingsStore { + settings: Settings | null; + fetchSettings: () => Promise<void>; + updateSettings: (s: Settings) => Promise<void>; +} + +export const useSettingsStore = create<SettingsStore>((set) => ({ + settings: null, + + fetchSettings: async () => { + try { + const settings = await invoke<Settings>('get_settings'); + set({ settings }); + } catch (e) { + console.error('fetchSettings error:', e); + } + }, + + updateSettings: async (s) => { + await invoke('update_settings', { settings: s }); + set({ settings: s }); + }, +})); |
