1
0
Fork 0
blog/src/features/Web3/components/Preview/Data.tsx

82 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-03-14 14:18:21 +01:00
import { useAccount, useChains, useEnsName } from 'wagmi'
2023-11-03 21:56:08 +01:00
import styles from './Data.module.css'
2023-11-02 22:47:14 +01:00
import { useStore } from '@nanostores/react'
2024-03-13 02:20:29 +01:00
import { $amount, $selectedToken } from '@features/Web3/stores'
2023-11-05 17:40:44 +01:00
import { truncateAddress } from '@features/Web3/lib/truncateAddress'
2023-11-02 22:47:14 +01:00
2023-11-03 21:56:08 +01:00
export function Data({
2023-11-02 22:47:14 +01:00
to,
ensResolved,
isDisabled
}: {
to: `0x${string}` | null | undefined
ensResolved: string | null | undefined
isDisabled: boolean
}) {
2024-03-14 14:18:21 +01:00
const chains = useChains()
const { address: from } = useAccount()
2023-11-03 00:33:06 +01:00
const { data: ensFrom } = useEnsName({ address: from, chainId: 1 })
2024-03-14 14:18:21 +01:00
2023-11-02 22:47:14 +01:00
const selectedToken = useStore($selectedToken)
2024-03-13 02:20:29 +01:00
const amount = useStore($amount)
2023-11-02 22:47:14 +01:00
2024-03-14 14:18:21 +01:00
const networkName = chains.filter(
(chain) => chain.id === selectedToken?.chainId
)[0].name
2023-11-02 22:47:14 +01:00
return (
<table className={styles.table} aria-disabled={isDisabled}>
<tbody>
<tr>
2023-11-03 00:33:06 +01:00
<td className={styles.label}>You are</td>
2023-11-05 17:40:44 +01:00
<td>
{ensFrom ? (
<abbr title={`${ensFrom} successfully resolved to ${from}`}>
<span className={styles.from}>{ensFrom}</span>
</abbr>
) : (
<code className={styles.from}>
{from ? truncateAddress(from) : ''}
</code>
)}
</td>
2023-11-03 00:33:06 +01:00
</tr>
<tr>
<td className={styles.label}>sending</td>
2023-11-05 17:40:44 +01:00
<td className={styles.amount}>
<div className="TokenLogo">
<img
src={selectedToken?.logo || ''}
alt={selectedToken?.name || ''}
/>
</div>
2023-11-02 22:47:14 +01:00
<span className={styles.amount}>
2024-03-13 02:20:29 +01:00
{amount} {selectedToken?.symbol}
2023-11-02 22:47:14 +01:00
</span>
</td>
</tr>
2023-11-03 00:33:06 +01:00
2023-11-02 22:47:14 +01:00
<tr>
<td className={styles.label}>on</td>
<td>
2024-03-14 14:18:21 +01:00
<div className="TokenLogo">
<img src={selectedToken?.chainLogo || ''} />
</div>
<span className={styles.network}>{networkName}</span>
2023-11-02 22:47:14 +01:00
</td>
</tr>
2023-11-03 00:33:06 +01:00
2023-11-02 22:47:14 +01:00
<tr>
<td className={styles.label}>to</td>
2023-11-05 17:40:44 +01:00
<td>
<abbr title={`${ensResolved} successfully resolved to ${to}`}>
<span className={styles.to}>{ensResolved}</span>
</abbr>
2023-11-02 22:47:14 +01:00
</td>
</tr>
</tbody>
</table>
)
}