( messageId: number, message: ExtensionRequest, )
| 6 | }; |
| 7 | |
| 8 | function sendMessageToExtension( |
| 9 | messageId: number, |
| 10 | message: ExtensionRequest, |
| 11 | ): Promise<any> { |
| 12 | return new Promise((resolve, reject) => { |
| 13 | const msg = { ...message, metaData: { messageId: createMessageId(messageId) } }; |
| 14 | |
| 15 | function handleMessage(event: any) { |
| 16 | if (event?.data?.type === `${msg.type}-result` && event?.data?.err) { |
| 17 | reject(new Error(event.data.err)); |
| 18 | } else if ( |
| 19 | event.data && |
| 20 | event.data.type === `${msg.type}-result` && |
| 21 | event.data.result?.metaData?.messageId === msg.metaData?.messageId |
| 22 | ) { |
| 23 | window.removeEventListener('message', handleMessage); |
| 24 | resolve(event.data.result); |
| 25 | } |
| 26 | } |
| 27 | |
| 28 | window.addEventListener('message', handleMessage); |
| 29 | |
| 30 | setTimeout(() => { |
| 31 | window.removeEventListener('message', handleMessage); |
| 32 | reject(new Error('Timeout wating for response from')); |
| 33 | }, 5000); |
| 34 | window.postMessage(msg, '*'); |
| 35 | }); |
| 36 | } |
| 37 | |
| 38 | export { sendMessageToExtension }; |
no test coverage detected