chore: add link to etherscan for asset dialog contract address (#2561)
* chore: add link to etherscan for asset dialog contract address * chore: use useEtherscanLink hook * chore: fix unused import
This commit is contained in:
parent
1f1ca510f4
commit
b10effa3c7
@ -1,18 +1,21 @@
|
||||
import { useEtherscanLink } from '@vegaprotocol/environment';
|
||||
import { addDecimalsFormatNumber, t } from '@vegaprotocol/react-helpers';
|
||||
import type * as Schema from '@vegaprotocol/types';
|
||||
import type { KeyValueTableRowProps } from '@vegaprotocol/ui-toolkit';
|
||||
import { Link } from '@vegaprotocol/ui-toolkit';
|
||||
import {
|
||||
KeyValueTable,
|
||||
KeyValueTableRow,
|
||||
Tooltip,
|
||||
} from '@vegaprotocol/ui-toolkit';
|
||||
import type { ReactNode } from 'react';
|
||||
import type { Asset } from './asset-data-provider';
|
||||
|
||||
type Rows = {
|
||||
key: AssetDetail;
|
||||
label: string;
|
||||
tooltip: string;
|
||||
value: (asset: Asset) => string | null | undefined;
|
||||
value: (asset: Asset) => ReactNode | undefined;
|
||||
valueTooltip?: (asset: Asset) => string | null | undefined;
|
||||
}[];
|
||||
|
||||
@ -97,7 +100,13 @@ export const rows: Rows = [
|
||||
tooltip: t(
|
||||
'The address of the contract for the token, on the ethereum network'
|
||||
),
|
||||
value: (asset) => (asset.source as Schema.ERC20).contractAddress,
|
||||
value: (asset) => {
|
||||
if (asset.source.__typename !== 'ERC20') {
|
||||
return;
|
||||
}
|
||||
|
||||
return <ContractAddressLink address={asset.source.contractAddress} />;
|
||||
},
|
||||
},
|
||||
{
|
||||
key: AssetDetail.WITHDRAWAL_THRESHOLD,
|
||||
@ -225,7 +234,7 @@ export const AssetDetailsTable = ({
|
||||
return (
|
||||
<KeyValueTable>
|
||||
{details
|
||||
.filter(({ value }) => value && value.length > 0)
|
||||
.filter(({ value }) => Boolean(value))
|
||||
.map(({ key, label, value, tooltip, valueTooltip }) => (
|
||||
<KeyValueTableRow key={key} {...props}>
|
||||
<div
|
||||
@ -257,3 +266,16 @@ export const AssetDetailsTable = ({
|
||||
</KeyValueTable>
|
||||
);
|
||||
};
|
||||
|
||||
// Separate component for the link as otherwise eslint will complain
|
||||
// about useEnvironment being used in a component
|
||||
// named with a lowercase 'value'
|
||||
const ContractAddressLink = ({ address }: { address: string }) => {
|
||||
const etherscanLink = useEtherscanLink();
|
||||
const href = etherscanLink(`/address/${address}`);
|
||||
return (
|
||||
<Link href={href} target="_blank">
|
||||
{address}
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user