import { ipcMain } from 'electron'; import IpcMainEvent = Electron.IpcMainEvent; export function registerHandler(channel: IpcChannel, controller: IpcController, handler: string): void { ipcMain.on(channel, (event: IpcMainEvent, payload: IpcPayload) => { ((controller.get() as unknown) as { [x: string]: IpcHandler }) [handler](payload.data) .then((result: unknown) => { const response: IpcResponse = { id: payload.id, success: true, data: result, }; event.reply(channel, response); }) .catch((reason: Error) => { const response: IpcResponse = { id: payload.id, success: false, error: reason.message, }; event.reply(channel, response); }); }); }