UNPKG

plurality-esm-wrapper

Version:

A React component for social connect popup.

100 lines (99 loc) 4.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const baseUrl = process.env.REACT_APP_WIDGET_BASE_URL || '*'; class PluralityApi { } PluralityApi.sendRequest = (eventName, ...args) => { const isOpen = localStorage.getItem('isOpen'); return new Promise((resolve, reject) => { // Create a unique message ID to identify the response const messageId = `msg-${Date.now()}`; // Set up the message listener function messageListener(event) { if ((event.data.eventName === eventName || event.data.eventName === 'errorMessage') && event.data.id === messageId) { resolve(event.data); window.removeEventListener('message', messageListener); } else if (event.data.eventName === 'noEthersProvider' && event.data.id === messageId) { alert(`${event.data}`); } } console.log("registering event listener for"); console.log(messageId); window.addEventListener('message', messageListener); const iframe = document.getElementById('iframe'); if (iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow) { const payload = { id: messageId, type: 'metamaskRequest', method: eventName, isWidgetOpen: isOpen || 'false' }; if (args.length > 0) { if (eventName === 'sendTransaction') payload.raw_transaction = args[0]; else if (eventName === 'getTransactionCount') payload.address = args[0]; else if (eventName === 'getAllAccounts') payload.rpc = args[0]; else if (eventName === 'getConnectedAccount') payload.rpc = args[0]; else if (eventName === 'getBalance') payload.rpc = args[0]; else if (eventName === 'getBlockNumber') payload.rpc = args[0]; else if (eventName === 'switchNetwork') payload.rpc = args[0]; else if (eventName === 'getPublicData') payload.key = args[0]; else if (eventName === 'setPublicData' || eventName === 'setAppData') payload.key = args[0]; else if (eventName === 'getPrivateData' || eventName === 'getAppData') payload.key = args[0]; else if (eventName === 'setPrivateData') payload.key = args[0]; else if (eventName === 'navigateTo') payload.step = args[0]; else payload.message = args[0]; } if (args.length > 1) { if (eventName === 'switchNetwork') payload.chain_id = args[1]; else if (eventName === 'getAllAccounts') payload.chain_id = args[1]; else if (eventName === 'getConnectedAccount') payload.chain_id = args[1]; else if (eventName === 'getBalance') payload.chain_id = args[1]; else if (eventName === 'getBlockNumber') payload.chain_id = args[1]; else if (eventName === 'sendTransaction') payload.rpc = args[1]; else if (eventName === 'getTransactionCount') payload.rpc = args[1]; else if (eventName === 'setPublicData' || eventName === 'setAppData') payload.value = args[1]; else if (eventName === 'setPrivateData') payload.value = args[1]; else payload.signature = args[1]; } if (args.length > 2) { if (eventName === 'sendTransaction' || eventName === 'getTransactionCount') { payload.chain_id = args[2]; } else { payload.address = args[0]; payload.abi = args[1]; payload.method_name = args[2]; payload.method_params = args[3]; payload.rpc = args[4]; payload.chain_id = args[5]; payload.options = args[6]; } } iframe.contentWindow.postMessage(payload, baseUrl); } else { window.removeEventListener('message', messageListener); reject(new Error('Iframe not found or iframe content window is not accessible')); } }); }; exports.default = PluralityApi;