import React, { ChangeEvent, ReactElement, useEffect, useState } from 'react' import { formatCurrency } from '@coingecko/cryptoformat' import { useUserPreferences } from '@context/UserPreferences' import Button from '@shared/atoms/Button' import AddToken from '@shared/AddToken' import Conversion from '@shared/Price/Conversion' import { useWeb3 } from '@context/Web3' import { getOceanConfig } from '@utils/ocean' import styles from './Details.module.css' import InputElement from '@shared/FormInput/InputElement' export default function Details(): ReactElement { const { web3Provider, web3ProviderInfo, web3Modal, connect, logout, networkData, networkId, balance } = useWeb3() const { locale } = useUserPreferences() const [mainCurrency, setMainCurrency] = useState() const [oceanTokenMetadata, setOceanTokenMetadata] = useState<{ address: string symbol: string }>() const [portisNetwork, setPortisNetwork] = useState() useEffect(() => { if (!networkId) return const symbol = networkId === 2021000 ? 'GX' : networkData?.nativeCurrency.symbol setMainCurrency(symbol) const oceanConfig = getOceanConfig(networkId) oceanConfig && setOceanTokenMetadata({ address: oceanConfig.oceanTokenAddress, symbol: oceanConfig.oceanTokenSymbol }) }, [networkData, networkId]) // Handle network change for Portis async function handlePortisNetworkChange(e: ChangeEvent) { setPortisNetwork(e.target.value) const portisNetworkName = e.target.value.toLowerCase() await web3Provider._portis.changeNetwork(portisNetworkName) // TODO: using our connect initializes a new Portis instance, // which then defaults back to initial network (Mainnet). // await connect() } return (
    {Object.entries(balance).map(([key, value]) => (
  • {key === 'eth' ? mainCurrency : oceanTokenMetadata?.symbol} {' '} {formatCurrency(Number(value), '', locale, false, { significantFigures: 4 })} {key === 'ocean' && }
  • ))}
  • {web3ProviderInfo?.name} {web3ProviderInfo?.name === 'Portis' && ( )} {web3ProviderInfo?.name === 'MetaMask' && ( )}

    {web3ProviderInfo?.name === 'Portis' && ( )}

) }