import { getEllipsisTxt } from '../../web3utils'; import React, { useState } from 'react'; import { useMoralis, useMoralisWeb3Api, useMoralisWeb3ApiCall, } from 'react-moralis'; import { NFT } from '../NFT'; import styles from './NFTBalance.styles'; import { Button } from '../Button'; import { Typography } from '../Typography'; import { INFTBalance } from './types'; import { Skeleton } from '../Skeleton'; const { DivStyled, DivFlexStyled } = styles; const NFTBalance: React.FC = ({ address, chain, ...props }) => { const { isInitialized, isInitializing } = useMoralis(); const [limit, setLimit] = useState(5); const Web3Api = useMoralisWeb3Api(); const { data, error, isLoading, isFetching } = useMoralisWeb3ApiCall( Web3Api.account.getNFTs, { address, chain, }, { autoFetch: /^0x[a-fA-F0-9]{40}$/.test(address) }, ); if (!isInitialized && !isInitializing) { return
; } if (!/^0x[a-fA-F0-9]{40}$/.test(address)) { return
Not a valid address
; } if (error) { return (
Couldn't get Nft Balance for {address} {error.message}
); } if (isLoading || isFetching) { return ( ); } if (!data) { return
No response
; } if (!data.result) { return
No result
; } return ( {getEllipsisTxt(address)} {data.result.length > 0 ? `Found ${data.result.length} NFT${ data.result.length === 1 ? null : 's' }` : 'No NFTs'} {data.result .slice(0, limit) .map( ( { token_id: tokenId, name, metadata, token_address: tokenAddress, }, index, ) => { return ( ); }, )} {data.result.length > limit && (