import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages'; const sendToBackground = (message) => { return browser.runtime.sendMessage(message); }; const receiveBackgroundMesssage = (func) => { return browser.runtime.onMessage.addListener((message) => { return Promise.resolve(func(message)); }); }; const receivePageMessage = (func) => { window.addEventListener('message', (e) => { let packet = e.data; if (e.origin !== window.origin || packet.method !== METHOD_REQUEST) { return; } let resp = { id: packet.id, method: METHOD_RESPONSE, }; let respMessage = func(packet.message); if (respMessage instanceof Promise) { return respMessage.then((data) => { resp.message = data; e.source.postMessage(resp, e.origin); }); } else if (respMessage) { resp.message = respMessage; } e.source.postMessage(resp, e.origin); }); }; export { sendToBackground, receiveBackgroundMesssage, receivePageMessage, };