aboutsummaryrefslogtreecommitdiff
path: root/e2e/ambassador/src/client/ipc.js
blob: 9f232eab7c30670ebd6ad19b3775a18799759ea0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 };