35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron';
|
|
|
|
// Expose protected methods that allow the renderer process to use
|
|
// the ipcRenderer without exposing the entire object
|
|
contextBridge.exposeInMainWorld('electron', {
|
|
ipcRenderer: {
|
|
invoke: (channel: string, ...args: any[]) => ipcRenderer.invoke(channel, ...args),
|
|
on: (channel: string, func: (...args: any[]) => void) => {
|
|
ipcRenderer.on(channel, (_event: any, ...args: any[]) => func(...args));
|
|
},
|
|
once: (channel: string, func: (...args: any[]) => void) => {
|
|
ipcRenderer.once(channel, (_event: any, ...args: any[]) => func(...args));
|
|
},
|
|
removeAllListeners: (channel: string) => {
|
|
ipcRenderer.removeAllListeners(channel);
|
|
},
|
|
},
|
|
});
|
|
|
|
// Type definitions for TypeScript
|
|
export interface IElectronAPI {
|
|
ipcRenderer: {
|
|
invoke: (channel: string, ...args: any[]) => Promise<any>;
|
|
on: (channel: string, func: (...args: any[]) => void) => void;
|
|
once: (channel: string, func: (...args: any[]) => void) => void;
|
|
removeAllListeners: (channel: string) => void;
|
|
};
|
|
}
|
|
|
|
declare global {
|
|
interface Window {
|
|
electron: IElectronAPI;
|
|
}
|
|
}
|