@@ -31,7 +31,6 @@ import {
3131 defineChain ,
3232 getChainMetadata ,
3333} from "thirdweb/chains" ;
34- import { shortenAddress } from "thirdweb/utils" ;
3534import { type WalletId , getWalletInfo } from "thirdweb/wallets" ;
3635import { TransactionsChartCardUI } from "../(team)/_components/TransactionsCard" ;
3736import { getThirdwebClient } from "../../../../@/constants/thirdweb.server" ;
@@ -383,29 +382,25 @@ function AuthMethodDistributionCard({ data }: { data: InAppWalletStats[] }) {
383382}
384383
385384async function ChainDistributionCard ( { data } : { data : TransactionStats [ ] } ) {
386- const formattedData = await Promise . all (
387- data . map ( async ( w ) => {
385+ const reducedData = await Promise . all (
386+ Object . entries (
387+ data . reduce (
388+ ( acc , curr ) => {
389+ acc [ curr . chainId ] = ( acc [ curr . chainId ] || 0 ) + curr . count ;
390+ return acc ;
391+ } ,
392+ { } as Record < string , number > ,
393+ ) ,
394+ ) . map ( async ( [ key , value ] ) => {
388395 // eslint-disable-next-line no-restricted-syntax
389- const chain = await getChainMetadata ( defineChain ( Number ( w . chainId ) ) ) ;
396+ const chain = defineChain ( Number ( key ) ) ;
397+ const chainMeta = await getChainMetadata ( chain ) ;
390398 return {
391- chainId : w . chainId ,
392- count : w . count ,
393- chainName : chain ?. slug ,
399+ label : chainMeta ?. slug || chain . id . toString ( ) ,
400+ value,
394401 } ;
395402 } ) ,
396403 ) ;
397- const reducedData = Object . entries (
398- formattedData . reduce (
399- ( acc , curr ) => {
400- acc [ curr . chainName ] = ( acc [ curr . chainName ] || 0 ) + curr . count ;
401- return acc ;
402- } ,
403- { } as Record < string , number > ,
404- ) ,
405- ) . map ( ( [ key , value ] ) => ( {
406- label : key ,
407- value,
408- } ) ) ;
409404
410405 const aggregateFn = ( ) => reducedData . length ;
411406
@@ -417,53 +412,38 @@ async function ChainDistributionCard({ data }: { data: TransactionStats[] }) {
417412async function ContractDistributionCard ( {
418413 data,
419414} : { data : TransactionStats [ ] } ) {
420- const formattedData = (
421- await Promise . all (
422- data . map ( async ( w ) => {
423- // eslint-disable-next-line no-restricted-syntax
424- const chain = defineChain ( Number ( w . chainId ) ) ;
425- const chainMeta = await getChainMetadata ( chain ) ;
426- if ( ! w . contractAddress ) {
427- return null ;
428- }
429- const contractData = await fetchDashboardContractMetadata (
430- getContract ( {
431- chain,
432- address : w . contractAddress ,
433- client : getThirdwebClient ( ) ,
434- } ) ,
435- ) . catch ( ( ) => undefined ) ;
436- return {
437- chainId : w . chainId ,
438- count : w . count ,
439- chainName : chainMeta ?. slug || w . chainId . toString ( ) ,
440- contractAddress : w . contractAddress ,
441- contractLabel :
442- contractData ?. name || shortenAddress ( w . contractAddress ) ,
443- } ;
444- } ) ,
445- )
446- ) . filter ( ( d ) => d !== null ) ;
447-
448- const reducedData = Object . entries (
449- formattedData . reduce (
450- ( acc , curr ) => {
451- acc [ `${ curr . chainName } :${ curr . contractAddress } :${ curr . contractLabel } ` ] =
452- ( acc [
453- `${ curr . chainName } :${ curr . contractAddress } :${ curr . contractLabel } `
454- ] || 0 ) + curr . count ;
455- return acc ;
456- } ,
457- { } as Record < string , number > ,
458- ) ,
459- ) . map ( ( [ key , value ] ) => {
460- const [ chainName , contractAddress , contractLabel ] = key . split ( ":" ) ;
461- return {
462- label : `${ contractLabel } (${ chainName } )` ,
463- link : `/${ chainName } /${ contractAddress } ` ,
464- value,
465- } ;
466- } ) ;
415+ const reducedData = await Promise . all (
416+ Object . entries (
417+ data
418+ . filter ( ( d ) => d . contractAddress )
419+ . reduce (
420+ ( acc , curr ) => {
421+ acc [ `${ curr . chainId } :${ curr . contractAddress } ` ] =
422+ ( acc [ `${ curr . chainId } :${ curr . contractAddress } ` ] || 0 ) +
423+ curr . count ;
424+ return acc ;
425+ } ,
426+ { } as Record < string , number > ,
427+ ) ,
428+ ) . map ( async ( [ key , value ] ) => {
429+ const [ chainId , contractAddress ] = key . split ( ":" ) ;
430+ // eslint-disable-next-line no-restricted-syntax
431+ const chain = defineChain ( Number ( chainId ) ) ;
432+ const chainMeta = await getChainMetadata ( chain ) ;
433+ const contractData = await fetchDashboardContractMetadata (
434+ getContract ( {
435+ chain,
436+ address : contractAddress as string , // we filter above
437+ client : getThirdwebClient ( ) ,
438+ } ) ,
439+ ) . catch ( ( ) => undefined ) ;
440+ return {
441+ label : `${ contractData ?. name } (${ chainMeta ?. slug } )` ,
442+ link : `/${ chainId } /${ contractAddress } ` ,
443+ value,
444+ } ;
445+ } ) ,
446+ ) ;
467447
468448 const aggregateFn = ( ) => reducedData . length ;
469449
0 commit comments