@r3l/app
Version:
112 lines (88 loc) • 4.54 kB
JavaScript
;
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