diff --git a/src/frontend/account/AccountDetail/useAccountDetailHook.ts b/src/frontend/account/AccountDetail/useAccountDetailHook.ts index b062d3b..861a32f 100644 --- a/src/frontend/account/AccountDetail/useAccountDetailHook.ts +++ b/src/frontend/account/AccountDetail/useAccountDetailHook.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useState } from 'react' import { api, PATHS } from '../../api' import { Account, AccountType, ContractType, Token, Transaction, TransactionSearchType } from '../../../types' -import { BigNumberish, utils } from 'ethers' +import { BigNumberish, formatUnits } from 'ethers' interface detailProps { id: string @@ -83,12 +83,12 @@ export const useAccountDetailHook = ({ id, txType }: detailProps): AccountDetail (accounts && accounts.length > 0 && accounts[0].accountId) ) { const { tokens } = await getToken() - if (tokens.length > 0) { + if (tokens && tokens.length > 0) { tokens.forEach( - (item: { contractType: ContractType; contractInfo: { decimals: string }; balance: BigNumberish }) => { + (item: { contractType: ContractType; contractInfo: { decimals: string } | null; balance: BigNumberish }) => { if (item.contractType === ContractType.ERC_20) { - const decimalsValue = item.contractInfo.decimals ? parseInt(item.contractInfo.decimals) : 18 - item.balance = utils.formatUnits(item.balance, decimalsValue) + const decimalsValue = item.contractInfo?.decimals ? parseInt(item.contractInfo.decimals) : 18 + item.balance = formatUnits(item.balance, decimalsValue) } } ) diff --git a/src/frontend/account/TokenDropdown/TokenDropdown.tsx b/src/frontend/account/TokenDropdown/TokenDropdown.tsx index f74c60a..3e2e39b 100644 --- a/src/frontend/account/TokenDropdown/TokenDropdown.tsx +++ b/src/frontend/account/TokenDropdown/TokenDropdown.tsx @@ -53,14 +53,19 @@ export const TokenDropdown: React.FC = (props) => {
- ERC-20 Tokens (1) + ERC-20 Tokens ({tokens.length})
setIsSortUp(!isSortUp)} />
{ tokens && tokens.length > 0 ? ( tokens?.map((row, index) => ( - + )) ) : (
No Tokens Found!
diff --git a/src/frontend/token/Token.tsx b/src/frontend/token/Token.tsx index 1b181d7..0d9f371 100644 --- a/src/frontend/token/Token.tsx +++ b/src/frontend/token/Token.tsx @@ -1,6 +1,6 @@ import React from 'react' import { useRouter } from 'next/router' -import { utils } from 'ethers' +import { formatUnits } from 'ethers' import { AnchorLink, Button, ContentLayout, CopyButton, Spacer, Tab, Table, Pagination } from '../components' import { DetailCard } from '../account/DetailCard' @@ -59,8 +59,7 @@ export const Token: React.FC = () => { {val ? transactionType === TransactionSearchType.ERC_721 ? val - : utils - .formatUnits( + : formatUnits( val as number, account?.contractInfo?.decimals ? parseInt(account?.contractInfo?.decimals) : 18 ) @@ -157,8 +156,7 @@ export const Token: React.FC = () => { { key: 'Max Total Supply :', value: account?.contractInfo?.totalSupply - ? utils - .formatUnits( + ? formatUnits( account?.contractInfo?.totalSupply, account?.contractInfo?.decimals ? parseInt(account?.contractInfo?.decimals) : 18 ) @@ -178,8 +176,7 @@ export const Token: React.FC = () => { { key: 'Max Total Supply :', value: account?.contractInfo?.totalSupply - ? utils - .formatUnits( + ? formatUnits( account?.contractInfo?.totalSupply, account?.contractInfo?.decimals ? parseInt(account?.contractInfo?.decimals) : 18 ) @@ -220,8 +217,7 @@ export const Token: React.FC = () => { {tokenBalance ? transactionType === TransactionSearchType.ERC_721 ? tokenBalance - : utils - .formatUnits( + : formatUnits( tokenBalance, account?.contractInfo?.decimals ? parseInt(account?.contractInfo?.decimals) : 18 ) diff --git a/src/frontend/transaction/TransactionDetail/Overview/Ovewview.tsx b/src/frontend/transaction/TransactionDetail/Overview/Ovewview.tsx index 6662e54..c759f61 100644 --- a/src/frontend/transaction/TransactionDetail/Overview/Ovewview.tsx +++ b/src/frontend/transaction/TransactionDetail/Overview/Ovewview.tsx @@ -65,7 +65,7 @@ export const Ovewview: React.FC = ({ transaction }) => { For
{calculateTokenValue(item, item.tokenType, undefined, true)} 
- {item.tokenType === TokenType.EVM_Internal ? 'SHM' : item.contractInfo.name || item.contractAddress} + {item.tokenType === TokenType.EVM_Internal ? 'SHM' : item.contractInfo?.name || item.contractAddress} ))} diff --git a/src/frontend/utils/calculateValue.ts b/src/frontend/utils/calculateValue.ts index 257d090..6546c69 100644 --- a/src/frontend/utils/calculateValue.ts +++ b/src/frontend/utils/calculateValue.ts @@ -1,5 +1,5 @@ import web3 from 'web3' -import { utils } from 'ethers' +import { formatUnits } from 'ethers' import { TokenTx, TokenType, TransactionType } from '../../types' import BN from 'bn.js' import { fromWeiNoTrailingComma } from './fromWeiNoTrailingComma' @@ -28,13 +28,13 @@ export const calculateTokenValue = ( ): string => { try { if (txType === TokenType.ERC_20 || txType === TokenType.EVM_Internal) { - const decimalsValue = tokenTx.contractInfo.decimals ? parseInt(tokenTx.contractInfo.decimals) : 18 + const decimalsValue = tokenTx.contractInfo?.decimals ? parseInt(tokenTx.contractInfo.decimals) : 18 return tokenTx.tokenValue === '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' ? 'unlimited' : fullValue - ? utils.formatUnits(tokenTx.tokenValue, decimalsValue) - : roundTokenValue(utils.formatUnits(tokenTx.tokenValue, decimalsValue)) + ? formatUnits(tokenTx.tokenValue, decimalsValue) + : roundTokenValue(formatUnits(tokenTx.tokenValue, decimalsValue)) // : round(web3.utils.fromWei(tokenTx.tokenValue, "ether")); } else if (txType === TokenType.ERC_721) { diff --git a/src/storage/account.ts b/src/storage/account.ts index 0038561..3a8a14c 100644 --- a/src/storage/account.ts +++ b/src/storage/account.ts @@ -266,8 +266,8 @@ export async function queryTokensByAddress(address: string, detail = false): Pro if (accountExist && accountExist.contractType) { filterTokens.push({ contractAddress: contractAddress, - contractInfo: accountExist.contractInfo, - contractType: accountExist.contractType, + contractInfo: accountExist?.contractInfo || null, + contractType: accountExist?.contractType || null, balance: tokenValue, }) }