app menu window

This commit is contained in:
2025-12-08 21:49:30 +08:00
parent 9c4a407820
commit 76d19aa5e6
17 changed files with 301 additions and 147 deletions

40
src/events/app-data.ts Normal file
View File

@@ -0,0 +1,40 @@
import { writable } from "svelte/store";
import { type AppData } from "../types/bindings/AppData";
import { listen, type UnlistenFn } from "@tauri-apps/api/event";
import { invoke } from "@tauri-apps/api/core";
export let appData = writable<AppData | null>(null);
let unlisten: UnlistenFn | null = null;
let isListening = false;
export async function initAppDataListener() {
try {
if (isListening) return;
appData.set(await invoke("get_app_data"));
unlisten = await listen<AppData>("app-data-refreshed", (event) => {
console.log("app-data-refreshed", event.payload);
appData.set(event.payload);
});
isListening = true;
} catch (error) {
console.error(error);
throw error;
}
}
export function stopAppDataListener() {
if (unlisten) {
unlisten();
unlisten = null;
isListening = false;
}
}
// Handle HMR (Hot Module Replacement) cleanup
if (import.meta.hot) {
import.meta.hot.dispose(() => {
stopAppDataListener();
});
}