RenaiApp/src/main/modules/ipc/ipc-server.ts

26 lines
792 B
TypeScript

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