A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
803 B
32 lines
803 B
7 years ago
|
import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages';
|
||
|
|
||
|
const send = (message) => {
|
||
|
return browser.runtime.sendMessage(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 { send, receivePageMessage };
|