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.
29 lines
678 B
29 lines
678 B
import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages'; |
|
|
|
const generateId = () => { |
|
return Math.random().toString(); |
|
}; |
|
|
|
const send = (message) => { |
|
return new Promise((resolve) => { |
|
let id = generateId(); |
|
let callback = (e) => { |
|
let packet = e.data; |
|
if (e.source !== window || packet.method !== METHOD_RESPONSE || |
|
packet.id !== id) { |
|
return; |
|
} |
|
window.removeEventListener('message', callback); |
|
resolve(packet.message); |
|
}; |
|
window.addEventListener('message', callback); |
|
|
|
window.postMessage({ |
|
id, |
|
method: METHOD_REQUEST, |
|
message |
|
}, window.origin); |
|
}); |
|
}; |
|
|
|
export { send };
|
|
|