UNPKG

@r3l/app

Version:
112 lines (88 loc) 4.54 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useWeb3React = useWeb3React; exports.useWeb3 = useWeb3; exports.useInactiveListener = useInactiveListener; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _core = require("@web3-react/core"); var _react = require("react"); var _connectors = require("../connectors"); var _utils = require("../utils"); var _common = require("@r3l/common"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function useWeb3React() { var context = (0, _core.useWeb3React)(); // const contextNetwork = useWeb3ReactCore<Web3Provider>(NetworkContextName); // return context.active ? context : contextNetwork; var metamask = _common.isWeb && !!window.ethereum; return _objectSpread(_objectSpread({}, context), {}, { metamask: metamask }); } function useWeb3() { var _useWeb3ReactCore = (0, _core.useWeb3React)(), activate = _useWeb3ReactCore.activate, library = _useWeb3ReactCore.library, active = _useWeb3ReactCore.active; var haveMM = _common.isWeb && !!window.ethereum; if (haveMM) window.ethereum.autoRefreshOnNetworkChange = false; (0, _react.useEffect)(function () { haveMM && activate(_connectors.injected); }, [haveMM, activate]); (0, _react.useEffect)(function () { library && active && (0, _utils.setSignerOrProvider)(library.getUncheckedSigner()); }, [library, active]); useInactiveListener(); } /** * Use for network and injected - logs user in * and out after checking what network theyre on */ function useInactiveListener() { var suppress = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var _useWeb3ReactCore2 = (0, _core.useWeb3React)(), active = _useWeb3ReactCore2.active, error = _useWeb3ReactCore2.error, activate = _useWeb3ReactCore2.activate; // specifically using useWeb3React because of what this hook does (0, _react.useEffect)(function () { if (!_common.isWeb) return; var _window = window, ethereum = _window.ethereum; if (ethereum && ethereum.on && !active && !error && !suppress) { var handleChainChanged = function handleChainChanged() { // eat errors activate(_connectors.injected, undefined, true).catch(function (error) { console.error('Failed to activate after chain changed', error); }); }; var handleAccountsChanged = function handleAccountsChanged(accounts) { if (accounts.length > 0) { // eat errors activate(_connectors.injected, undefined, true).catch(function (error) { console.error('Failed to activate after accounts changed', error); }); } }; var handleNetworkChanged = function handleNetworkChanged() { activate(_connectors.injected, undefined, true).catch(function (error) { console.error('Failed to activate after networks changed', error); }); }; ethereum.on('chainChanged', handleChainChanged); ethereum.on('accountsChanged', handleAccountsChanged); ethereum.on('networkChanged', handleNetworkChanged); return function () { if (ethereum.removeListener) { ethereum.removeListener('chainChanged', handleChainChanged); ethereum.removeListener('accountsChanged', handleAccountsChanged); ethereum.removeListener('networkChanged', handleNetworkChanged); } }; } return undefined; }, [active, error, suppress, activate]); } //# sourceMappingURL=web3.js.map