import { Box, Typography } from '@material-ui/core' import { useSnackbar } from 'notistack' import { ReactElement, useContext, useState } from 'react' import Check from 'remixicon-react/CheckLineIcon' import { useNavigate } from 'react-router' import { providers } from 'ethers' import { HistoryHeader } from '../../components/HistoryHeader' import { SwarmButton } from '../../components/SwarmButton' import { SwarmTextInput } from '../../components/SwarmTextInput' import { Context } from '../../providers/TopUp' import { ROUTES } from '../../routes' import { Rpc } from '../../utils/rpc' export default function Index(): ReactElement { const { providerUrl, setProviderUrl } = useContext(Context) const [localProviderUrl, setLocalProviderUrl] = useState(providerUrl) const { enqueueSnackbar } = useSnackbar() const navigate = useNavigate() async function onSubmit() { if (!localProviderUrl) return try { await Rpc.eth_getBlockByNumber(new providers.JsonRpcProvider(localProviderUrl)) enqueueSnackbar('Connected to RPC provider successfully.', { variant: 'success' }) setProviderUrl(localProviderUrl) navigate(ROUTES.CONFIRMATION) } catch (error) { enqueueSnackbar('Could not connect to RPC provider.', { variant: 'error' }) } } return ( <> Connect to the blockchain Set up RPC endpoint To connect to and retrieve data from the blockchain, you'll need to connect to a publicly-provided node via the node's RPC endpoint. If you're not familiar with this, please read{' '} this guide . setLocalProviderUrl(event.target.value)} defaultValue={providerUrl || ''} /> Connect ) }