17 lines
597 B
TypeScript
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));
|
|
},
|
|
};
|