@@ -4,7 +4,6 @@ import { ArrowDownIcon } from "@radix-ui/react-icons";
44import { useState } from "react" ;
55import type { TokenWithPrices } from "../../../../bridge/types/Token.js" ;
66import type { ThirdwebClient } from "../../../../client/client.js" ;
7- import { NATIVE_TOKEN_ADDRESS } from "../../../../constants/addresses.js" ;
87import {
98 getFiatSymbol ,
109 type SupportedFiatCurrency ,
@@ -86,11 +85,10 @@ type FundWalletProps = {
8685 */
8786 showThirdwebBranding : boolean ;
8887
89- initialSelection : {
90- tokenAddress : string | undefined ;
91- chainId : number | undefined ;
92- amount : string | undefined ;
93- } ;
88+ selectedToken : SelectedToken | undefined ;
89+ setSelectedToken : ( token : SelectedToken | undefined ) => void ;
90+ amountSelection : AmountSelection ;
91+ setAmountSelection : ( amountSelection : AmountSelection ) => void ;
9492
9593 /**
9694 * The currency to use for the payment.
@@ -116,14 +114,14 @@ type FundWalletProps = {
116114 } ;
117115} ;
118116
119- type SelectedToken =
117+ export type SelectedToken =
120118 | {
121119 chainId : number ;
122120 tokenAddress : string ;
123121 }
124122 | undefined ;
125123
126- type AmountSelection =
124+ export type AmountSelection =
127125 | {
128126 type : "usd" ;
129127 value : string ;
@@ -134,10 +132,6 @@ type AmountSelection =
134132 } ;
135133
136134export function FundWallet ( props : FundWalletProps ) {
137- const [ amountSelection , setAmountSelection ] = useState < AmountSelection > ( {
138- type : "token" ,
139- value : props . initialSelection . amount ?? "" ,
140- } ) ;
141135 const theme = useCustomTheme ( ) ;
142136 const activeWalletInfo = useActiveWalletInfo ( ) ;
143137 const receiver =
@@ -154,29 +148,18 @@ export function FundWallet(props: FundWalletProps) {
154148 checksumAddress ( activeWalletInfo ?. activeAccount ?. address )
155149 : true ) ;
156150
157- const [ selectedToken , setSelectedToken ] = useState < SelectedToken > ( ( ) => {
158- if ( ! props . initialSelection . chainId ) {
159- return undefined ;
160- }
161-
162- return {
163- chainId : props . initialSelection . chainId ,
164- tokenAddress : props . initialSelection . tokenAddress || NATIVE_TOKEN_ADDRESS ,
165- } ;
166- } ) ;
167-
168151 const tokenQuery = useTokenQuery ( {
169- tokenAddress : selectedToken ?. tokenAddress ,
170- chainId : selectedToken ?. chainId ,
152+ tokenAddress : props . selectedToken ?. tokenAddress ,
153+ chainId : props . selectedToken ?. chainId ,
171154 client : props . client ,
172155 } ) ;
173156
174157 const destinationToken =
175158 tokenQuery . data ?. type === "success" ? tokenQuery . data . token : undefined ;
176159
177160 const tokenBalanceQuery = useTokenBalance ( {
178- chainId : selectedToken ?. chainId ,
179- tokenAddress : selectedToken ?. tokenAddress ,
161+ chainId : props . selectedToken ?. chainId ,
162+ tokenAddress : props . selectedToken ?. tokenAddress ,
180163 client : props . client ,
181164 walletAddress : activeWalletInfo ?. activeAccount ?. address ,
182165 } ) ;
@@ -227,9 +210,9 @@ export function FundWallet(props: FundWalletProps) {
227210 activeWalletInfo = { activeWalletInfo }
228211 onClose = { ( ) => setIsTokenSelectionOpen ( false ) }
229212 client = { props . client }
230- selectedToken = { selectedToken }
213+ selectedToken = { props . selectedToken }
231214 setSelectedToken = { ( token ) => {
232- setSelectedToken ( token ) ;
215+ props . setSelectedToken ( token ) ;
233216 setIsTokenSelectionOpen ( false ) ;
234217 } }
235218 />
@@ -240,11 +223,11 @@ export function FundWallet(props: FundWalletProps) {
240223 < TokenSection
241224 title = { actionLabel }
242225 presetOptions = { props . presetOptions }
243- amountSelection = { amountSelection }
244- setAmount = { setAmountSelection }
226+ amountSelection = { props . amountSelection }
227+ setAmount = { props . setAmountSelection }
245228 activeWalletInfo = { activeWalletInfo }
246229 selectedToken = {
247- selectedToken
230+ props . selectedToken
248231 ? {
249232 data :
250233 tokenQuery . data ?. type === "success"
@@ -310,7 +293,7 @@ export function FundWallet(props: FundWalletProps) {
310293
311294 const fiatPricePerToken = destinationToken . prices [ props . currency ] ;
312295 const { tokenValue } = getAmounts (
313- amountSelection ,
296+ props . amountSelection ,
314297 fiatPricePerToken ,
315298 ) ;
316299
0 commit comments