55 DiscIcon ,
66} from "@radix-ui/react-icons" ;
77import { useQuery } from "@tanstack/react-query" ;
8- import { useEffect , useState } from "react" ;
8+ import { useState } from "react" ;
99import { Buy , Sell } from "../../../../../bridge/index.js" ;
1010import type { BridgeChain } from "../../../../../bridge/types/Chain.js" ;
1111import type { TokenWithPrices } from "../../../../../bridge/types/Token.js" ;
@@ -42,7 +42,6 @@ import { Spacer } from "../../components/Spacer.js";
4242import { Text } from "../../components/text.js" ;
4343import { SelectBuyToken } from "./select-buy-token.js" ;
4444import { SelectSellToken } from "./select-sell-token.js" ;
45- import { getLastUsedTokens , setLastUsedTokens } from "./storage.js" ;
4645import type {
4746 ActiveWalletInfo ,
4847 SwapWidgetConnectOptions ,
@@ -67,106 +66,32 @@ type SwapUIProps = {
6766 mode : "buy" | "sell" ;
6867 } ,
6968 ) => void ;
70- prefill :
71- | {
72- buyToken ?: {
73- tokenAddress ?: string ;
74- chainId : number ;
75- amount ?: string ;
76- } ;
77- sellToken ?: {
78- tokenAddress ?: string ;
79- chainId : number ;
80- amount ?: string ;
81- } ;
82- }
83- | undefined ;
69+ buyToken : TokenSelection | undefined ;
70+ sellToken : TokenSelection | undefined ;
71+ setBuyToken : ( token : TokenSelection | undefined ) => void ;
72+ setSellToken : ( token : TokenSelection | undefined ) => void ;
73+ amountSelection : {
74+ type : "buy" | "sell" ;
75+ amount : string ;
76+ } ;
77+ setAmountSelection : ( amountSelection : {
78+ type : "buy" | "sell" ;
79+ amount : string ;
80+ } ) => void ;
8481} ;
8582
8683export function SwapUI ( props : SwapUIProps ) {
8784 const [ screen , setScreen ] = useState <
8885 "base" | "select-buy-token" | "select-sell-ui"
8986 > ( "base" ) ;
9087
91- const [ amountSelection , setAmountSelection ] = useState < {
92- type : "buy" | "sell" ;
93- amount : string ;
94- } > ( ( ) => {
95- if ( props . prefill ?. buyToken ?. amount ) {
96- return {
97- type : "buy" ,
98- amount : props . prefill . buyToken . amount ,
99- } ;
100- }
101- if ( props . prefill ?. sellToken ?. amount ) {
102- return {
103- type : "sell" ,
104- amount : props . prefill . sellToken . amount ,
105- } ;
106- }
107- return {
108- type : "buy" ,
109- amount : "" ,
110- } ;
111- } ) ;
112-
113- const [ buyToken , setBuyToken ] = useState < TokenSelection | undefined > ( ( ) => {
114- if ( props . prefill ?. buyToken ) {
115- return {
116- tokenAddress :
117- props . prefill . buyToken . tokenAddress ||
118- getAddress ( NATIVE_TOKEN_ADDRESS ) ,
119- chainId : props . prefill . buyToken . chainId ,
120- } ;
121- }
122- const last = getLastUsedTokens ( ) ?. buyToken ;
123- if ( last ) {
124- return {
125- tokenAddress : getAddress ( last . tokenAddress ) ,
126- chainId : last . chainId ,
127- } ;
128- }
129- return undefined ;
130- } ) ;
131- const [ sellToken , setSellToken ] = useState < TokenSelection | undefined > ( ( ) => {
132- if ( props . prefill ?. sellToken ) {
133- return {
134- tokenAddress :
135- props . prefill . sellToken . tokenAddress ||
136- getAddress ( NATIVE_TOKEN_ADDRESS ) ,
137- chainId : props . prefill . sellToken . chainId ,
138- } ;
139- }
140- const last = getLastUsedTokens ( ) ?. sellToken ;
141- if ( last ) {
142- return {
143- tokenAddress : getAddress ( last . tokenAddress ) ,
144- chainId : last . chainId ,
145- } ;
146- }
147- return undefined ;
148- } ) ;
149-
150- // persist selections to localStorage whenever they change
151- useEffect ( ( ) => {
152- if ( buyToken ) {
153- setLastUsedTokens ( { buyToken, sellToken } ) ;
154- }
155- } , [ buyToken , sellToken ] ) ;
156-
15788 if ( screen === "base" ) {
15889 return (
15990 < SwapUIBase
16091 { ...props }
16192 onSelectToken = { ( type ) => {
16293 setScreen ( type === "buy" ? "select-buy-token" : "select-sell-ui" ) ;
16394 } }
164- buyToken = { buyToken }
165- sellToken = { sellToken }
166- setBuyToken = { setBuyToken }
167- setSellToken = { setSellToken }
168- amountSelection = { amountSelection }
169- setAmountSelection = { setAmountSelection }
17095 />
17196 ) ;
17297 }
@@ -176,9 +101,9 @@ export function SwapUI(props: SwapUIProps) {
176101 < SelectBuyToken
177102 onBack = { ( ) => setScreen ( "base" ) }
178103 client = { props . client }
179- selectedToken = { buyToken }
104+ selectedToken = { props . buyToken }
180105 setSelectedToken = { ( token ) => {
181- setBuyToken ( token ) ;
106+ props . setBuyToken ( token ) ;
182107 setScreen ( "base" ) ;
183108 } }
184109 />
@@ -190,10 +115,10 @@ export function SwapUI(props: SwapUIProps) {
190115 < SelectSellToken
191116 onBack = { ( ) => setScreen ( "base" ) }
192117 client = { props . client }
193- selectedToken = { sellToken }
118+ selectedToken = { props . sellToken }
194119 theme = { props . theme }
195120 setSelectedToken = { ( token ) => {
196- setSellToken ( token ) ;
121+ props . setSellToken ( token ) ;
197122 setScreen ( "base" ) ;
198123 } }
199124 activeWalletInfo = { props . activeWalletInfo }
0 commit comments