Files
zeroclock/src/stores/settings.ts
2026-02-20 14:46:56 +02:00

39 lines
1002 B
TypeScript

import { defineStore } from 'pinia'
import { ref } from 'vue'
import { invoke } from '@tauri-apps/api/core'
import { handleInvokeError } from '../utils/errorHandler'
export const useSettingsStore = defineStore('settings', () => {
const settings = ref<Record<string, string>>({})
const loading = ref(false)
async function fetchSettings() {
loading.value = true
try {
settings.value = await invoke<Record<string, string>>('get_settings')
} catch (error) {
handleInvokeError(error, 'Failed to fetch settings', () => fetchSettings())
} finally {
loading.value = false
}
}
async function updateSetting(key: string, value: string): Promise<boolean> {
try {
await invoke('update_settings', { key, value })
settings.value[key] = value
return true
} catch (error) {
console.error('Failed to update setting:', error)
return false
}
}
return {
settings,
loading,
fetchSettings,
updateSetting
}
})