Files
live-stream-app/src/preload/index.ts
2025-11-16 18:11:30 +08:00

40 lines
1.3 KiB
TypeScript

import { contextBridge, ipcRenderer } from "electron";
const electronAPI = {
ipcRenderer: {
invoke: (channel: string, ...args: any[]) => ipcRenderer.invoke(channel, ...args),
on: (channel: string, listener: (...args: any[]) => void) => ipcRenderer.on(channel, listener),
off: (channel: string, listener: (...args: any[]) => void) => ipcRenderer.off(channel, listener),
send: (channel: string, ...args: any[]) => ipcRenderer.send(channel, ...args),
removeAllListeners: (channel: string) => ipcRenderer.removeAllListeners(channel),
}
};
const api = {
installOllama: () => ipcRenderer.invoke("install-ollama-and-model"),
// 监听进度 (Send/On)
onInstallProgress: (callback) => {
ipcRenderer.on("install-progress", (_event, value) => callback(value));
},
// 移除监听器
removeInstallProgressListeners: () => {
ipcRenderer.removeAllListeners("install-progress");
},
};
if (process.contextIsolated) {
try {
contextBridge.exposeInMainWorld("electron", electronAPI);
contextBridge.exposeInMainWorld("api", api);
} catch (error) {
console.error(error);
}
} else {
// @ts-ignore (define in dts)
window.electron = electronAPI;
// @ts-ignore (define in dts)
window.api = api;
}