From 004601812a33950311a938e22d0eb106a910363f Mon Sep 17 00:00:00 2001 From: MananTank Date: Mon, 3 Mar 2025 18:39:45 +0000 Subject: [PATCH] [TOOL-3581] Dashboard: Fix project overview page crashing because of ContractDistributionCard (#6392) --- .../Transactions/TransactionCharts.tsx | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/apps/dashboard/src/app/team/[team_slug]/[project_slug]/components/Transactions/TransactionCharts.tsx b/apps/dashboard/src/app/team/[team_slug]/[project_slug]/components/Transactions/TransactionCharts.tsx index 03772b6d9e6..ac8f2cdee70 100644 --- a/apps/dashboard/src/app/team/[team_slug]/[project_slug]/components/Transactions/TransactionCharts.tsx +++ b/apps/dashboard/src/app/team/[team_slug]/[project_slug]/components/Transactions/TransactionCharts.tsx @@ -66,7 +66,7 @@ async function ChainDistributionCard({ data }: { data: TransactionStats[] }) { async function ContractDistributionCard({ data, }: { data: TransactionStats[] }) { - const reducedData = await Promise.all( + const _reducedData = await Promise.all( Object.entries( data .filter((d) => d.contractAddress) @@ -83,25 +83,36 @@ async function ContractDistributionCard({ .sort((a, b) => b[1] - a[1]) .slice(0, 10) // only top ten .map(async ([key, value]) => { - const [chainId, contractAddress] = key.split(":"); - // eslint-disable-next-line no-restricted-syntax - const chain = defineChain(Number(chainId)); - const chainMeta = await getChainMetadata(chain).catch(() => undefined); - const contractData = await fetchDashboardContractMetadata( - getContract({ - chain, - address: contractAddress as string, // we filter above - client: getThirdwebClient(), - }), - ).catch(() => undefined); - return { - label: `${contractData?.name} (${chainMeta?.slug || chainId})`, - link: `/${chainId}/${contractAddress}`, - value, - }; + try { + const [chainId, contractAddress] = key.split(":"); + if (Number(chainId) === 0) { + return undefined; + } + // eslint-disable-next-line no-restricted-syntax + const chain = defineChain(Number(chainId)); + const chainMeta = await getChainMetadata(chain).catch( + () => undefined, + ); + const contractData = await fetchDashboardContractMetadata( + getContract({ + chain, + address: contractAddress as string, // we filter above + client: getThirdwebClient(), + }), + ).catch(() => undefined); + return { + label: `${contractData?.name} (${chainMeta?.slug || chainId})`, + link: `/${chainId}/${contractAddress}`, + value, + }; + } catch { + return undefined; + } }), ); + const reducedData = _reducedData.filter((d) => !!d); + const aggregateFn = () => new Set( data