import { Flex } from '@chakra-ui/react'; import React from 'react'; import type { TokenInfo, TokenInstance } from 'types/api/token'; import config from 'configs/app'; import useIsMounted from 'lib/hooks/useIsMounted'; import { Skeleton } from 'toolkit/chakra/skeleton'; import AppActionButton from 'ui/shared/AppActionButton/AppActionButton'; import useAppActionData from 'ui/shared/AppActionButton/useAppActionData'; import CopyToClipboard from 'ui/shared/CopyToClipboard'; import * as DetailedInfo from 'ui/shared/DetailedInfo/DetailedInfo'; import DetailedInfoSponsoredItem from 'ui/shared/DetailedInfo/DetailedInfoSponsoredItem'; import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; import NftMedia from 'ui/shared/nft/NftMedia'; import TokenNftMarketplaces from 'ui/token/TokenNftMarketplaces'; import TokenInstanceCreatorAddress from './details/TokenInstanceCreatorAddress'; import TokenInstanceMetadataInfo from './details/TokenInstanceMetadataInfo'; import TokenInstanceTransfersCount from './details/TokenInstanceTransfersCount'; interface Props { data?: TokenInstance; token?: TokenInfo; isLoading?: boolean; scrollRef?: React.RefObject; } const TokenInstanceDetails = ({ data, token, scrollRef, isLoading }: Props) => { const appActionData = useAppActionData(token?.address_hash, !isLoading); const isMounted = useIsMounted(); const handleCounterItemClick = React.useCallback(() => { window.setTimeout(() => { // cannot do scroll instantly, have to wait a little scrollRef?.current?.scrollIntoView({ behavior: 'smooth' }); }, 500); }, [ scrollRef ]); if (!data || !token || !isMounted) { return null; } return ( <> { data.is_unique && data.owner && ( <> Owner ) } Token ID { (config.UI.views.nft.marketplaces.length === 0 && appActionData) && ( <> Dapp ) } ); }; export default React.memo(TokenInstanceDetails);