feat(FN-1070): restore desktop Electron scaffolding
- Reintroduce the @fusion/desktop workspace package with Electron main, preload, and renderer entrypoints - Add desktop build/test tooling (TypeScript, Vitest, electron-builder) and update workspace build dependency settings for Electron - Wire secure IPC bridge APIs for app version/quit flows with exported preload typings - Add README usage docs and unit tests covering main-process window/tray behavior and preload API wiring
This commit is contained in:
25
packages/desktop/src/preload.ts
Normal file
25
packages/desktop/src/preload.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { contextBridge, ipcRenderer } from "electron";
|
||||
|
||||
export interface FusionDesktopAPI {
|
||||
getAppVersion(): Promise<string>;
|
||||
quit(): void;
|
||||
onDashboardReady(callback: () => void): () => void;
|
||||
}
|
||||
|
||||
const api: FusionDesktopAPI = {
|
||||
getAppVersion(): Promise<string> {
|
||||
return ipcRenderer.invoke("app:get-version");
|
||||
},
|
||||
quit(): void {
|
||||
ipcRenderer.send("app:quit");
|
||||
},
|
||||
onDashboardReady(callback: () => void): () => void {
|
||||
const listener = () => callback();
|
||||
ipcRenderer.on("dashboard:ready", listener);
|
||||
return () => {
|
||||
ipcRenderer.removeListener("dashboard:ready", listener);
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
contextBridge.exposeInMainWorld("fusionDesktop", api);
|
||||
Reference in New Issue
Block a user