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

17 lines
597 B
TypeScript

import { ipcMain, IpcMainInvokeEvent } from 'electron';
import { container, Service } from '../../core/container';
const logger = container.get(Service.LOGGER);
export const ipcServer: IpcServer = {
answer<T extends IpcChannel>(channel: T, answerer: IpcHandler<IpcParameter<T>, IpcAnswer<T>>) {
const listener = (data: IpcParameter<T>): Promise<IpcAnswer<T>> =>
answerer(data).catch((reason: Error) => {
void logger.exception(reason);
throw reason;
});
ipcMain.handle(channel, (event: IpcMainInvokeEvent, data: IpcParameter<T>) => listener(data));
},
};