/
QuickMeet
/
Chat.Desktop
Обзор
Документация
Войти
/
QuickMeet
/
Chat.Desktop
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
3.8.13
src/ipc/renderer.ts
40 строк
1 KB
Jean Brito
chore: Update Electron 16.0.2 (#2236)
30 ноя 2021, 22:30
Не верифицирован
30 ноя 2021, 22:30
63301bb
Код
Авторство
О чём код?
import { ipcRenderer, IpcRendererEvent } from 'electron'; import { 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);