/
neveisya
/
react-app
Обзор
Документация
Войти
/
neveisya
/
react-app
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/remote-methods/useMessage.ts
30 строк
938 B
sasha
222
25 авг 2024, 07:27
25 авг 2024, 07:27
09ad92c
Код
Авторство
О чём код?
import { baseUrl } from './baseMethodsDescription'; export type ResolveFn = (data: { name: string; args: any[] }) => Promise<any>; export const useMessage = (onInit: (resolveFn: ResolveFn) => void) => { const messageListener = (event: MessageEvent) => { if (event.data === 'init') { const [port] = event.ports; const resolveFn = (data: { name: string; args: any[] }): Promise<any> => new Promise((resolve) => { if (!port) throw new Error(); port.onmessage = (message) => resolve(message.data); port.postMessage(data); }); onInit(resolveFn); window.removeEventListener('message', messageListener); } }; window.addEventListener('message', messageListener); const loadListener = () => { window.opener?.postMessage('ready', baseUrl); window.removeEventListener('load', loadListener); }; window.addEventListener('load', loadListener); };