/
QuickMeet
/
Chat.Desktop
Обзор
Документация
Войти
/
QuickMeet
/
Chat.Desktop
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/ipc/renderer.ts
41 строка
1 KB
Jean Brito
chore: Update fuselage (#2673)
03 авг 2023, 01:31
Не верифицирован
03 авг 2023, 01:31
4d68ba5
Код
Авторство
О чём код?
import type { IpcRendererEvent } from 'electron'; import { ipcRenderer } from 'electron'; import type { Handler, Channel } from './channels'; export const handle = <N extends Channel>( channel: N, handler: (...args: Parameters<Handler<N>>) => Promise<ReturnType<Handler<N>>> ): (() => void) => { const listener = async ( _: IpcRendererEvent, id: string, ...args: any[] ): Promise<void> => { try { const resolved = await handler(...(args as Parameters<Handler<N>>)); ipcRenderer.send(`${channel}@${id}`, { resolved }); } catch (error) { error instanceof Error && ipcRenderer.send(`${channel}@${id}`, { rejected: { name: (error as Error).name, message: (error as Error).message, stack: (error as Error).stack, }, }); } }; ipcRenderer.on(channel, listener); return () => { ipcRenderer.removeListener(channel, listener); }; }; export const invoke = <N extends Channel>( channel: N, ...args: Parameters<Handler<N>> ): Promise<ReturnType<Handler<N>>> => ipcRenderer.invoke(channel, ...args);