Skip to content

Commit 522ad90

Browse files
committed
[TOOL-4899] Dashboard: fetch token icon from bridge api as fallback in coin asset page
1 parent 9d6739e commit 522ad90

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { isProd } from "@/constants/env-utils";
2+
3+
export async function fetchTokenInfoFromBridge(params: {
4+
chainId: number;
5+
tokenAddress: string;
6+
clientId: string;
7+
}) {
8+
const res = await fetch(
9+
`https://bridge.${isProd ? "thirdweb.com" : "thirdweb-dev.com"}/v1/tokens?chainId=${params.chainId}&tokenAddress=${params.tokenAddress}&clientId=${params.clientId}`,
10+
);
11+
12+
if (!res.ok) {
13+
return null;
14+
}
15+
16+
const data = (await res.json()) as {
17+
data: Array<{
18+
iconUri: string;
19+
address: string;
20+
decimals: number;
21+
name: string;
22+
symbol: string;
23+
priceUsd: number;
24+
}>;
25+
};
26+
27+
return data.data[0];
28+
}

apps/dashboard/src/app/(app)/(dashboard)/(chain)/[chain_id]/[contractAddress]/public-pages/erc20/erc20.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@ import { ContractAnalyticsOverview } from "./_components/contract-analytics/cont
99
import { BuyTokenEmbed } from "./_components/PayEmbedSection";
1010
import { TokenStats } from "./_components/PriceChart";
1111
import { RecentTransfers } from "./_components/RecentTransfers";
12+
import { fetchTokenInfoFromBridge } from "./_utils/fetch-coin-info";
1213
import { getCurrencyMeta } from "./_utils/getCurrencyMeta";
1314

1415
export async function ERC20PublicPage(props: {
1516
serverContract: ThirdwebContract;
1617
clientContract: ThirdwebContract;
1718
chainMetadata: ChainMetadata;
1819
}) {
19-
const [contractMetadata, activeClaimCondition, tokenDecimals] =
20+
const [contractMetadata, activeClaimCondition, tokenDecimals, tokenInfo] =
2021
await Promise.all([
2122
getContractMetadata({
2223
contract: props.serverContract,
@@ -25,8 +26,17 @@ export async function ERC20PublicPage(props: {
2526
decimals({
2627
contract: props.serverContract,
2728
}),
29+
fetchTokenInfoFromBridge({
30+
chainId: props.serverContract.chain.id,
31+
clientId: props.clientContract.client.clientId,
32+
tokenAddress: props.serverContract.address,
33+
}),
2834
]);
2935

36+
if (!contractMetadata.image && tokenInfo) {
37+
contractMetadata.image = tokenInfo.iconUri;
38+
}
39+
3040
const claimConditionCurrencyMeta = activeClaimCondition
3141
? await getCurrencyMeta({
3242
chain: props.serverContract.chain,

0 commit comments

Comments
 (0)