Files
tom goriunovandGitHub 65df67cc56 Fix loading state for the address hash in address page subtitle (#2752)
* fix loading state for the address hash in address page subtitle

* fix ts
2025-06-04 14:31:37 +02:00

76 lines
1.7 KiB
TypeScript

import React from 'react';
import type { Address } from 'types/api/address';
import { Skeleton } from 'toolkit/chakra/skeleton';
import * as DetailedInfo from 'ui/shared/DetailedInfo/DetailedInfo';
import TokenEntity from 'ui/shared/entities/token/TokenEntity';
interface Props {
data: Pick<Address, 'name' | 'token' | 'is_contract'>;
isLoading?: boolean;
}
const AddressNameInfo = ({ data, isLoading }: Props) => {
if (data.token) {
return (
<>
<DetailedInfo.ItemLabel
hint="Token name and symbol"
isLoading={ isLoading }
>
Token name
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<TokenEntity
token={ data.token }
isLoading={ isLoading }
noIcon
noCopy
/>
</DetailedInfo.ItemValue>
</>
);
}
if (data.is_contract && data.name) {
return (
<>
<DetailedInfo.ItemLabel
hint="The name found in the source code of the Contract"
isLoading={ isLoading }
>
Contract name
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<Skeleton loading={ isLoading }>
{ data.name }
</Skeleton>
</DetailedInfo.ItemValue>
</>
);
}
if (data.name) {
return (
<>
<DetailedInfo.ItemLabel
hint="The name of the validator"
isLoading={ isLoading }
>
Validator name
</DetailedInfo.ItemLabel>
<DetailedInfo.ItemValue>
<Skeleton loading={ isLoading }>
{ data.name }
</Skeleton>
</DetailedInfo.ItemValue>
</>
);
}
return null;
};
export default React.memo(AddressNameInfo);