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);