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, useMemo } from 'react'; import { t } from '@vegaprotocol/react-helpers'; import { useEnvironment } from '@vegaprotocol/network-switcher'; import { createConnectors } from '../../lib/web3-connectors'; interface Web3ContainerProps { children: ReactNode; } export const Web3Container = ({ children }: Web3ContainerProps) => { const [dialogOpen, setDialogOpen] = useState(false); const { config, loading, error } = useEthereumConfig(); const { ETHEREUM_PROVIDER_URL, ETHEREUM_CHAIN_ID } = useEnvironment(); const Connectors = useMemo( () => createConnectors(ETHEREUM_PROVIDER_URL, ETHEREUM_CHAIN_ID), [ETHEREUM_CHAIN_ID, ETHEREUM_PROVIDER_URL] ); 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}
); };