UNPKG

@muzamint/superfluid-react

Version:

connect metamask and superfluid

127 lines (107 loc) 3.88 kB
import { useEffect, useState, createElement } from 'react'; import { Env, MetaMaskWalletProvider, Sdk } from 'etherspot'; import { ethers, Contract, SuperXEROX_Contract_Address_Ropsten, abi, BigNumber } from 'superxerox-sdk'; // A type of promise-like that resolves synchronously and supports only one observer const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator"; const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator"; // Asynchronously call a function and send errors to recovery continuation function _catch(body, recover) { try { var result = body(); } catch(e) { return recover(e); } if (result && result.then) { return result.then(void 0, recover); } return result; } var styles = {"test":"_3ybTi"}; var provider = new ethers.providers.Web3Provider(window.ethereum); var superXeroXContract_ro = new Contract(SuperXEROX_Contract_Address_Ropsten, abi, provider); var message1 = '👻 Metamask is not detected'; var message2 = '📡 Fail on create Etherspot Sdk Account'; var message3 = '✂️ User cancel the connection with the Metamask or Not in Testnets'; Env.defaultName = 'testnets'; var ExampleComponent = function ExampleComponent(_ref) { var text = _ref.text; useEffect(function () { handleConnetion(); }); var handleConnetion = function handleConnetion() { try { if (!MetaMaskWalletProvider.detect()) { setAddress(message1); return Promise.resolve(); } return Promise.resolve(connectionToMetamask()).then(function () {}); } catch (e) { return Promise.reject(e); } }; var connectionToMetamask = function connectionToMetamask() { try { var _temp2 = _catch(function () { return Promise.resolve(MetaMaskWalletProvider.connect()).then(function (walletProvider) { console.log(walletProvider); createSdk(walletProvider); }); }, function () { setAddress(message3); }); return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0); } catch (e) { return Promise.reject(e); } }; var createSdk = function createSdk(walletProvider) { try { var sdk = new Sdk(walletProvider); var state = sdk.state; console.info('SDK created', state); console.log('Smart wallet', state.account.address); setAddress(state.account.address); setNetwork(state.network.name); setConnected(true); } catch (e) { setAddress(message2); } }; var _useState = useState(''), address = _useState[0], setAddress = _useState[1]; var _useState2 = useState(''), network = _useState2[0], setNetwork = _useState2[1]; var _useState3 = useState(false), setConnected = _useState3[1]; var _useState4 = useState(0), setVal = _useState4[1]; var _useState5 = useState(''), netflow = _useState5[0], setNetflow = _useState5[1]; var total = BigNumber.from("0"); useEffect(function () { var timer = window.setInterval(function () { setVal(function (v) { return v + 1; }); try { superXeroXContract_ro.getNetFlow().then(function (x) { total = total.add(x); setNetflow(ethers.utils.formatEther(total)); }); } catch (error) { console.log('error', error); } }, 100); return function () { return window.clearInterval(timer); }; }, []); return createElement("div", { className: styles.test }, "\uD83D\uDC51 ", text, " ", address, " \uD83D\uDE80 ", network, '🐝', " netflow = ", netflow); }; export { ExampleComponent }; //# sourceMappingURL=index.modern.js.map