import { AsyncRenderer, Button, Splash } from '@vegaprotocol/ui-toolkit'; import { Web3Provider, Web3ConnectDialog, useEthereumConfig, } from '@vegaprotocol/web3'; import { useWeb3React } from '@web3-react/core'; import type { ReactNode } from 'react'; import { useEffect, useState } from 'react'; import { Connectors } from '../../lib/web3-connectors'; import { t } from '@vegaprotocol/react-helpers'; interface Web3ContainerProps { children: ReactNode; } export const Web3Container = ({ children }: Web3ContainerProps) => { const [dialogOpen, setDialogOpen] = useState(false); const { config, loading, error } = useEthereumConfig(); return ( {config ? ( {children} ) : null} ); }; interface Web3ContentProps { children: ReactNode; appChainId: number; setDialogOpen: (isOpen: boolean) => void; } export const Web3Content = ({ children, appChainId, setDialogOpen, }: Web3ContentProps) => { const { isActive, error, connector, chainId } = useWeb3React(); useEffect(() => { if (connector?.connectEagerly && !('Cypress' in window)) { connector.connectEagerly(); } }, [connector]); if (error) { return (

{t(`Something went wrong: ${error.message}`)}

); } if (!isActive) { return (

{t('Connect your Ethereum wallet')}

); } if (chainId !== appChainId) { return (

{t(`This app only works on chain ID: ${appChainId}`)}

); } return <>{children}; }; interface SplashWrapperProps { children: ReactNode; } const SplashWrapper = ({ children }: SplashWrapperProps) => { return (
{children}
); };