import React, { useContext } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Redirect, useHistory, useParams } from 'react-router-dom'; import { getTokens } from '../../ducks/metamask/metamask'; import { getTokenList } from '../../selectors'; import { useCopyToClipboard } from '../../hooks/useCopyToClipboard'; import Identicon from '../../components/ui/identicon'; import { I18nContext } from '../../contexts/i18n'; import { useTokenTracker } from '../../hooks/useTokenTracker'; import { useTokenFiatAmount } from '../../hooks/useTokenFiatAmount'; import { showModal } from '../../store/actions'; import { NETWORK_TYPE_RPC } from '../../../shared/constants/network'; import { ASSET_ROUTE, DEFAULT_ROUTE } from '../../helpers/constants/routes'; import Tooltip from '../../components/ui/tooltip'; import Button from '../../components/ui/button'; import CopyIcon from '../../components/ui/icon/copy-icon.component'; import Box from '../../components/ui/box'; import Typography from '../../components/ui/typography'; import { COLORS, TYPOGRAPHY, FONT_WEIGHT, DISPLAY, TEXT_ALIGN, OVERFLOW_WRAP, } from '../../helpers/constants/design-system'; import { isEqualCaseInsensitive } from '../../../shared/modules/string-utils'; export default function TokenDetailsPage() { const dispatch = useDispatch(); const history = useHistory(); const t = useContext(I18nContext); const tokens = useSelector(getTokens); const tokenList = useSelector(getTokenList); const { address: tokenAddress } = useParams(); const tokenMetadata = Object.values(tokenList).find((token) => isEqualCaseInsensitive(token.address, tokenAddress), ); const aggregators = tokenMetadata?.aggregators?.join(', '); const fileName = tokenMetadata?.iconUrl; const imagePath = fileName; const token = tokens.find(({ address }) => isEqualCaseInsensitive(address, tokenAddress), ); const { tokensWithBalances } = useTokenTracker([token]); const tokenBalance = tokensWithBalances[0]?.string; const tokenCurrencyBalance = useTokenFiatAmount( token?.address, tokenBalance, token?.symbol, ); const currentNetwork = useSelector((state) => ({ nickname: state.metamask.provider.nickname, type: state.metamask.provider.type, })); const { nickname: networkNickname, type: networkType } = currentNetwork; const [copied, handleCopy] = useCopyToClipboard(); if (!token) { return ; } return ( {t('tokenDetails')} {t('tokenDecimalTitle')} {token.decimals} {t('network')} {networkType === NETWORK_TYPE_RPC ? networkNickname ?? t('privateNetwork') : t(networkType)} {process.env.TOKEN_DETECTION_V2 && aggregators && ( <> {t('tokenList')} {`${aggregators}.`} )} ); }