import { Grid, GridItem } from '@chakra-ui/react'; import React from 'react'; import type { TokenInstance } from 'types/api/token'; import type { MetadataAttributes } from 'types/client/token'; import parseMetadata from 'lib/token/parseMetadata'; import { Link } from 'toolkit/chakra/link'; import { Skeleton } from 'toolkit/chakra/skeleton'; import { TruncatedText } from 'toolkit/components/truncation/TruncatedText'; import * as DetailedInfo from 'ui/shared/DetailedInfo/DetailedInfo'; import { useMetadataUpdateContext } from '../contexts/metadataUpdate'; interface Props { data?: TokenInstance; isLoading?: boolean; } interface ItemProps { data: MetadataAttributes; isLoading?: boolean; } const Item = ({ data, isLoading }: ItemProps) => { const value = (() => { if (data.value_type === 'URL') { return ( ); } return ; })(); return ( { value } ); }; const TokenInstanceMetadataInfo = ({ data, isLoading: isLoadingProp }: Props) => { const { status: refetchStatus } = useMetadataUpdateContext() || {}; const metadata = React.useMemo(() => parseMetadata(data?.metadata), [ data ]); const hasMetadata = metadata && Boolean((metadata.name || metadata.description || metadata.attributes)); if (!hasMetadata) { return null; } const isLoading = isLoadingProp || refetchStatus === 'WAITING_FOR_RESPONSE'; return ( <> { metadata?.name && ( <> Name { metadata.name } ) } { metadata?.description && ( <> Description { metadata.description } ) } { metadata?.attributes && metadata.attributes.length > 0 && ( <> Attributes { metadata.attributes .filter((attribute) => attribute.value) .map((attribute, index) => ) } ) } ); }; export default React.memo(TokenInstanceMetadataInfo);