hooks#useEagerConnect TypeScript Examples
The following examples show how to use
hooks#useEagerConnect.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Web3ReactManager.tsx From interface-v2 with GNU General Public License v3.0 | 5 votes |
Web3ReactManager: React.FC<{ children: JSX.Element }> = ({
children,
}) => {
const { t } = useTranslation();
const classes = useStyles();
const { active } = useWeb3React();
const {
active: networkActive,
error: networkError,
activate: activateNetwork,
} = useWeb3React(GlobalConst.utils.NetworkContextName);
// try to eagerly connect to an injected provider, if it exists and has granted access already
const triedEager = useEagerConnect();
// after eagerly trying injected, if the network connect ever isn't active or in an error state, activate itd
useEffect(() => {
if (triedEager && !networkActive && !networkError && !active) {
activateNetwork(network);
}
}, [triedEager, networkActive, networkError, activateNetwork, active]);
// when there's no account connected, react to logins (broadly speaking) on the injected provider, if it exists
useInactiveListener(!triedEager);
// handle delayed loader state
const [showLoader, setShowLoader] = useState(false);
useEffect(() => {
const timeout = setTimeout(() => {
setShowLoader(true);
}, 600);
return () => {
clearTimeout(timeout);
};
}, []);
// on page load, do nothing until we've tried to connect to the injected connector
if (!triedEager) {
return null;
}
// if the account context isn't active, and there's an error on the network context, it's an irrecoverable error
if (!active && networkError) {
return (
<Box className={classes.messageWrapper}>
<Typography className={classes.message}>{t('unknownError')}</Typography>
</Box>
);
}
// if neither context is active, spin
if (!active && !networkActive) {
return showLoader ? (
<Box className={classes.messageWrapper}>
<CircularProgress />
</Box>
) : null;
}
return children;
}