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
|
|
|
});
|