vdi/pc-fe/src/main/preload.ts

47 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-07-30 01:07:36 +00:00
import { contextBridge, ipcRenderer } from 'electron';
2025-08-25 07:25:23 +00:00
// 页面调用的方法:桥接前端和主进程
2025-08-21 10:06:49 +00:00
contextBridge.exposeInMainWorld('electronAPI', {
2025-07-30 01:07:36 +00:00
getPlatform: async () => {
return await ipcRenderer.invoke('getPlatform');
},
2025-08-21 10:06:49 +00:00
closeApp: () => ipcRenderer.send('close-app'),
minimizeApp: () => ipcRenderer.send('minimize-app'),
exitKiosk: () => ipcRenderer.send('exit-kiosk'),
2025-08-25 07:25:23 +00:00
// 新增的 gRPC API
grpcStartDownload: (config: any) => ipcRenderer.invoke('grpc-start-download', config),
grpcStopDownload: (downloadId: string) => ipcRenderer.invoke('grpc-stop-download', downloadId),
grpcCheckConnection: () => ipcRenderer.invoke('grpc-check-connection'),
// gRPC 进度监听
onGrpcProgress: (callback: (progress: any) => void) => {
ipcRenderer.on('grpc-progress-update', (_, progress) => callback(progress));
},
// 移除监听器
removeAllGrpcProgressListeners: () => {
ipcRenderer.removeAllListeners('grpc-progress-update');
},
2025-08-21 10:06:49 +00:00
// 事件监听
onMainProcessMessage: (callback: (data: string) => void) => {
ipcRenderer.on('main-process-message', (_, data) => callback(data));
},
2025-08-25 07:25:23 +00:00
2025-08-21 10:06:49 +00:00
on(...args: Parameters<typeof ipcRenderer.on>) {
const [channel, listener] = args
return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args))
},
off(...args: Parameters<typeof ipcRenderer.off>) {
const [channel, ...omit] = args
return ipcRenderer.off(channel, ...omit)
},
send(...args: Parameters<typeof ipcRenderer.send>) {
const [channel, ...omit] = args
return ipcRenderer.send(channel, ...omit)
},
invoke(...args: Parameters<typeof ipcRenderer.invoke>) {
const [channel, ...omit] = args
return ipcRenderer.invoke(channel, ...omit)
}
2025-07-30 01:07:36 +00:00
});