@@ -3,106 +3,134 @@ import { useReadContracts } from "wagmi";
33import { Mint } from "./Mint" ;
44
55export function ContractData ( params : {
6- contractAddress : `0x${string } `,
7- userAddresses ?: readonly `0x${string } `[ ] ,
6+ contractAddress : `0x${string } `;
7+ userAddresses ?: readonly `0x${string } `[ ] ;
88} ) {
99 const userAddressesSet = new Set ( params . userAddresses ) ;
1010
1111 const myTokenContract = {
1212 address : params . contractAddress ,
13- abi : myTokenModuleMyTokenAbi
13+ abi : myTokenModuleMyTokenAbi ,
1414 } as const ;
1515
1616 const contractData = useReadContracts ( {
17- contracts : [ {
18- ...myTokenContract ,
19- functionName : "minter"
20- } , {
21- ...myTokenContract ,
22- functionName : "totalSupply"
23- } , {
24- ...myTokenContract ,
25- functionName : "symbol"
26- } , {
27- ...myTokenContract ,
28- functionName : "decimals"
29- } , ...( params . userAddresses ?? [ ] ) . map ( addr => ( {
30- ...myTokenContract ,
31- abi : myTokenModuleMyTokenAbi ,
32- functionName : "balanceOf" ,
33- args : [ addr ]
34- } ) )
35- ]
17+ contracts : [
18+ {
19+ ...myTokenContract ,
20+ functionName : "minter" ,
21+ } ,
22+ {
23+ ...myTokenContract ,
24+ functionName : "totalSupply" ,
25+ } ,
26+ {
27+ ...myTokenContract ,
28+ functionName : "symbol" ,
29+ } ,
30+ {
31+ ...myTokenContract ,
32+ functionName : "decimals" ,
33+ } ,
34+ ...( params . userAddresses ?? [ ] ) . map ( ( addr ) => ( {
35+ ...myTokenContract ,
36+ abi : myTokenModuleMyTokenAbi ,
37+ functionName : "balanceOf" ,
38+ args : [ addr ] ,
39+ } ) ) ,
40+ ] ,
3641 } ) ;
3742
3843 let error : string | null = null ;
3944
4045 if ( contractData . error !== null ) {
4146 error = contractData . error . toString ( ) ;
4247 } else {
43- error = contractData . data ?. find ( el => el . error !== undefined ) ?. toString ( ) || null ;
48+ error =
49+ contractData . data ?. find ( ( el ) => el . error !== undefined ) ?. toString ( ) ||
50+ null ;
4451 }
4552
4653 if ( error !== null ) {
4754 return (
4855 < p >
49- Loading contract data for < span className = "font-bold" > { params . contractAddress } </ span > failed!< br />
56+ Loading contract data for{ " " }
57+ < span className = "font-bold" > { params . contractAddress } </ span > failed!
58+ < br />
5059 < code style = { { whiteSpace : "pre-wrap" } } > { error } </ code >
5160 </ p >
5261 ) ;
5362 }
5463
55- if ( contractData . isLoading || contractData ?. data === undefined || contractData . data . some ( el => el === undefined ) ) {
64+ if (
65+ contractData . isLoading ||
66+ contractData ?. data === undefined ||
67+ contractData . data . some ( ( el ) => el === undefined )
68+ ) {
5669 return (
5770 < p >
58- Loading contract data for < span className = "font-bold" > { params . contractAddress } </ span > ...
71+ Loading contract data for{ " " }
72+ < span className = "font-bold" > { params . contractAddress } </ span > ...
5973 </ p >
6074 ) ;
6175 }
6276
6377 const owner = contractData . data [ 0 ] . result as `0x${string } `;
64- const isOwner = owner && ( userAddressesSet . has ( owner ) ) ;
78+ const isOwner = owner && userAddressesSet . has ( owner ) ;
6579 const totalSupply = contractData . data [ 1 ] . result as bigint ;
6680 const tokenName = contractData . data [ 2 ] . result as string ;
6781 const decimals = contractData . data [ 3 ] . result as number ;
68- const balances = contractData . data . slice ( 4 ) . map ( el => el . result as bigint ) ;
82+ const balances = contractData . data . slice ( 4 ) . map ( ( el ) => el . result as bigint ) ;
6983
70- const formatMoney = ( amount : bigint ) : string => (
71- String ( Number ( amount / 10n ** ( BigInt ( decimals ) - 3n ) ) / 1000 )
72- + " "
73- + tokenName
74- ) ;
84+ const formatMoney = ( amount : bigint ) : string =>
85+ String ( Number ( amount / 10n ** ( BigInt ( decimals ) - 3n ) ) / 1000 ) +
86+ " " +
87+ tokenName ;
7588
7689 return (
7790 < >
7891 < p >
79- Smart contract address: < span className = "font-bold" > { params . contractAddress } </ span >
92+ Smart contract address:{ " " }
93+ < span className = "font-bold" > { params . contractAddress } </ span >
8094 </ p >
8195 < p >
8296 Smart contract owner: < span className = "font-bold" > { owner } </ span >
83- { isOwner && ( < > (that's you!!)</ > ) }
97+ { isOwner && < > (that's you!!)</ > }
8498 </ p >
8599 < p >
86- Total supply: < span className = "font-bold" > { formatMoney ( totalSupply ) } </ span >
100+ Total supply:{ " " }
101+ < span className = "font-bold" > { formatMoney ( totalSupply ) } </ span >
87102 </ p >
88103
89- { ( params . userAddresses && params . userAddresses . length > 0 ) && (
104+ { params . userAddresses && params . userAddresses . length > 0 && (
90105 < div className = "border rounded-md my-5 p-2 w-full align-top" >
91106 < h3 className = "font-bold text-lg" > Balances</ h3 >
92107 < div className = "w-full grid grid-cols-2" >
93- { balances . map ( ( val , index ) => [
94- < div key = { index . toString ( ) + "_addr" } className = "text-left" > { params . userAddresses ! [ index ] } </ div > ,
95- < div key = { index . toString ( ) + "_value" } className = "text-right" > { formatMoney ( val ) } </ div >
96- ] ) . flat ( ) }
108+ { balances
109+ . map ( ( val , index ) => [
110+ < div key = { index . toString ( ) + "_addr" } className = "text-left" >
111+ { params . userAddresses ! [ index ] }
112+ </ div > ,
113+ < div key = { index . toString ( ) + "_value" } className = "text-right" >
114+ { formatMoney ( val ) }
115+ </ div > ,
116+ ] )
117+ . flat ( ) }
97118 </ div >
98119 </ div >
99120 ) }
100121
101- < Mint contractAddress = { params . contractAddress } ownerAddress = { owner } decimals = { decimals } symbol = { tokenName } />
122+ < Mint
123+ contractAddress = { params . contractAddress }
124+ ownerAddress = { owner }
125+ isOwner = { Boolean ( isOwner ) }
126+ decimals = { decimals }
127+ symbol = { tokenName }
128+ />
102129
103130 { ! isOwner && (
104- < p style = { { color : 'orange' , fontSize : '14px' , marginTop : '8px' } } >
105- Note: You are not the contract owner. Minting may fail unless you have the MINTER_ROLE.
131+ < p style = { { color : "orange" , fontSize : "14px" , marginTop : "8px" } } >
132+ Note: You are not the contract owner. Minting may fail unless you have
133+ the MINTER_ROLE.
106134 </ p >
107135 ) }
108136 </ >
0 commit comments