plurality-esm-wrapper
Version:
A React component for social connect popup.
100 lines (99 loc) • 4.69 kB
JavaScript
;
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;