J.A.R.V.I.S-rust/frontend/src/stores.ts

51 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-01-04 22:50:34 +05:00
import { writable, get } from "svelte/store"
import { invoke } from "@tauri-apps/api/core"
2026-01-04 22:50:34 +05:00
// ### LISTENING STATE
// note: defaults to false since GUI doesn't have listening capability
export const isListening = writable(false)
2026-01-04 22:50:34 +05:00
// ### ASSISTANT VOICE
export const assistantVoice = writable("")
2026-01-04 22:50:34 +05:00
// load voice setting from db
async function loadVoiceSetting() {
try {
const voice = await invoke<string>("db_read", { key: "assistant_voice" })
assistantVoice.set(voice)
} catch (err) {
console.error("failed to load voice setting:", err)
}
}
loadVoiceSetting()
2026-01-04 22:50:34 +05:00
// ### APP INFO
// these are loaded once on startup
export const appInfo = writable({
tgOfficialLink: "",
feedbackLink: "",
repositoryLink: "",
logFilePath: ""
})
2026-01-04 22:50:34 +05:00
async function loadAppInfo() {
try {
const [tg, feedback, repo, logPath] = await Promise.all([
invoke<string>("get_tg_official_link"),
invoke<string>("get_feedback_link"),
invoke<string>("get_repository_link"),
invoke<string>("get_log_file_path")
])
appInfo.set({
tgOfficialLink: tg,
feedbackLink: feedback,
repositoryLink: repo,
logFilePath: logPath
})
} catch (err) {
console.error("failed to load app info:", err)
}
}
loadAppInfo()