1- use std:: io:: empty;
2- use std:: str:: FromStr ;
3- use alloy:: primitives:: { utils:: { format_units, parse_units, Unit } , U256 } ;
1+ use alloy:: primitives:: { utils:: { format_units, parse_units} , U256 } ;
42use dioxus:: prelude:: * ;
53use wasm_bindgen_futures:: spawn_local;
64use serde_wasm_bindgen:: from_value;
@@ -20,22 +18,22 @@ enum TokenType{
2018 CAsset ,
2119}
2220
23- fn update_pair ( from : & String , wrappers : & Vec :: < TokenWrapperInfo > ) -> ( Option < TokenInfo > , Option < TokenInfo > ) {
21+ fn update_pair ( from : & String , wrappers : & [ TokenWrapperInfo ] ) -> ( Option < TokenInfo > , Option < TokenInfo > ) {
2422
25- if let Some ( tok) = wrappers. iter ( ) . find ( |t| t. dTokenSymbol == * from || t. cAssetSymbol == * from) {
23+ if let Some ( tok) = wrappers. iter ( ) . find ( |t| t. d_token_symbol == * from || t. c_asset_symbol == * from) {
2624 let d_token = TokenInfo {
27- symbol : tok. dTokenSymbol . clone ( ) ,
28- address : tok. dTokenAddress . clone ( ) ,
29- decimals : tok. dTokenDecimals ,
25+ symbol : tok. d_token_symbol . clone ( ) ,
26+ address : tok. d_token_address . clone ( ) ,
27+ decimals : tok. d_token_decimals ,
3028 token_type : TokenType :: DToken ,
3129 } ;
3230 let c_asset = TokenInfo {
33- symbol : tok. cAssetSymbol . clone ( ) ,
34- address : tok. cAssetAddress . clone ( ) ,
35- decimals : tok. cAssetDecimals ,
31+ symbol : tok. c_asset_symbol . clone ( ) ,
32+ address : tok. c_asset_address . clone ( ) ,
33+ decimals : tok. c_asset_decimals ,
3634 token_type : TokenType :: CAsset ,
3735 } ;
38- if tok. dTokenSymbol == * from {
36+ if tok. d_token_symbol == * from {
3937 return ( Some ( d_token) , Some ( c_asset) )
4038 } else {
4139 return ( Some ( c_asset) , Some ( d_token) )
@@ -44,11 +42,11 @@ fn update_pair(from: &String, wrappers: &Vec::<TokenWrapperInfo>) -> (Option<Tok
4442 ( None , None )
4543}
4644
47- fn token_pair_to_wrapper ( token_a : & Option < TokenInfo > , token_b : & Option < TokenInfo > , wrappers : & Vec :: < TokenWrapperInfo > ) -> Option < TokenWrapperInfo > {
45+ fn token_pair_to_wrapper ( token_a : & Option < TokenInfo > , token_b : & Option < TokenInfo > , wrappers : & [ TokenWrapperInfo ] ) -> Option < TokenWrapperInfo > {
4846 if let ( Some ( token_a) , Some ( token_b) ) = ( token_a, token_b) {
4947 return wrappers. iter ( ) . find ( |w|
50- ( w. cAssetAddress == token_a. address && w. dTokenAddress == token_b. address ) ||
51- ( w. cAssetAddress == token_b. address && w. dTokenAddress == token_a. address )
48+ ( w. c_asset_address == token_a. address && w. d_token_address == token_b. address ) ||
49+ ( w. c_asset_address == token_b. address && w. d_token_address == token_a. address )
5250 ) . cloned ( ) ;
5351 }
5452 None
@@ -73,17 +71,17 @@ pub fn App() -> Element {
7371 let mut amount_out = use_signal ( || "" . to_string ( ) ) ;
7472
7573 let mut balance = use_signal ( || "0.0" . to_string ( ) ) ;
76- let mut wrappers = use_signal ( || Vec :: < TokenWrapperInfo > :: new ( ) ) ;
74+ let wrappers = use_signal ( Vec :: < TokenWrapperInfo > :: new) ;
7775 let mut to_selected = use_signal ( || None as Option < TokenInfo > ) ;
7876 let mut from_selected = use_signal ( || None as Option < TokenInfo > ) ;
79- let mut tx_status = use_signal ( || "" . to_string ( ) ) ;
77+ let tx_status = use_signal ( || "" . to_string ( ) ) ;
8078
8179 let on_connect = move |_| {
8280 spawn_local ( {
83- let mut address = address. clone ( ) ;
84- let mut wrappers = wrappers. clone ( ) ;
85- let mut from_selected = from_selected. clone ( ) ;
86- let mut to_selected = to_selected. clone ( ) ;
81+ let mut address = address;
82+ let mut wrappers = wrappers;
83+ let mut from_selected = from_selected;
84+ let mut to_selected = to_selected;
8785
8886 async move {
8987 let addr = connect_metamask ( ) . await ;
@@ -92,11 +90,11 @@ pub fn App() -> Element {
9290 match fetch_wrappers ( factory_address) . await {
9391 Ok ( list) => {
9492 if let Some ( first) = list. first ( ) {
95- let ( from, to) = update_pair ( & first. dTokenSymbol , & list) ;
93+ let ( from, to) = update_pair ( & first. d_token_symbol , & list) ;
9694 to_selected. set ( to) ;
9795 from_selected. set ( from) ;
98- if let Ok ( bal) = from_value :: < String > ( get_token_balance ( & addr, & first. dTokenAddress ) . await ) {
99- log:: debug!( "GetTokenBalance of address {} for token address {} :{:?}" , addr, first. dTokenAddress , bal) ;
96+ if let Ok ( bal) = from_value :: < String > ( get_token_balance ( & addr, & first. d_token_address ) . await ) {
97+ log:: debug!( "GetTokenBalance of address {} for token address {} :{:?}" , addr, first. d_token_address , bal) ;
10098 balance. set ( bal) ;
10199 }
102100 }
@@ -112,15 +110,14 @@ pub fn App() -> Element {
112110 use_effect ( move || {
113111 let from_sel = from_selected ( ) . clone ( ) ;
114112 let addr = address. read ( ) . clone ( ) ;
115- let mut balance = balance. clone ( ) ;
113+ let mut balance = balance;
116114
117115 spawn_local ( async move {
118- if let Some ( from_sel) = from_sel {
119- if let Ok ( bal) = from_value :: < String > ( get_token_balance ( & addr, & from_sel. address ) . await ) {
116+ if let Some ( from_sel) = from_sel
117+ && let Ok ( bal) = from_value :: < String > ( get_token_balance ( & addr, & from_sel. address ) . await ) {
120118 log:: debug!( "GetTokenBalance of address {} for token address {} :{:?}" , addr, from_sel. address, bal) ;
121119 balance. set ( bal) ;
122120 }
123- }
124121 } ) ;
125122 } ) ;
126123
@@ -137,15 +134,15 @@ pub fn App() -> Element {
137134 fee. set ( "" . to_string ( ) )
138135 } else {
139136 let payed_fee = if matches ! ( from_sel. token_type, TokenType :: DToken ) {
140- wrapper. fees . inBps
137+ wrapper. fees . in_bps
141138 } else {
142- wrapper. fees . outBps
139+ wrapper. fees . out_bps
143140 } ;
144141 let mut payed_fee = curr_amount. get_absolute ( ) * U256 :: from ( payed_fee) / U256 :: from ( 1000 ) ;
145142 if from_sel. decimals > to_sel. decimals {
146- payed_fee = payed_fee / U256 :: from ( 10 ^( from_sel. decimals - to_sel. decimals ) )
143+ payed_fee /= U256 :: from ( 10 ^( from_sel. decimals - to_sel. decimals ) )
147144 } else if from_sel. decimals < to_sel. decimals {
148- payed_fee = payed_fee * U256 :: from ( 10 ^( to_sel. decimals - from_sel. decimals ) )
145+ payed_fee *= U256 :: from ( 10 ^( to_sel. decimals - from_sel. decimals ) )
149146 }
150147 let amount_o = curr_amount. get_absolute ( ) - payed_fee;
151148 if let Ok ( amount_o) = format_units ( amount_o, to_sel. decimals as u8 ) {
@@ -211,8 +208,8 @@ pub fn App() -> Element {
211208 to_selected. set( to) ;
212209 } ,
213210 { current_wrappers. iter( ) . map( |t| rsx!(
214- option { value: "{t.dTokenSymbol }" , "{t.dTokenSymbol }" } ,
215- option { value: "{t.cAssetSymbol }" , "{t.cAssetSymbol }" }
211+ option { value: "{t.d_token_symbol }" , "{t.d_token_symbol }" } ,
212+ option { value: "{t.c_asset_symbol }" , "{t.c_asset_symbol }" }
216213 ) ) }
217214 }
218215 }
@@ -278,11 +275,11 @@ pub fn App() -> Element {
278275 button {
279276 class: "mt-6 w-full py-3 text-lg font-semibold rounded-xl btn-gradient" ,
280277 onclick: move |_| {
281- let mut tx_status = tx_status. clone ( ) ;
278+ let mut tx_status = tx_status;
282279 if let ( Some ( from_selected) , Some ( to_selected) ) = ( from_selected. read( ) . clone( ) , to_selected. read( ) . clone( ) ) {
283280 spawn_local( {
284281 async move {
285- tx_status. set( format! ( "Exchange ..." ) ) ;
282+ tx_status. set( "Exchange ..." . to_string ( ) ) ;
286283 let res = if matches!( from_selected. token_type, TokenType :: DToken ) {
287284 wrap_tokens( router_address, & from_selected. address. to_string( ) , & amount. read( ) , & to_selected. address. to_string( ) ) . await
288285 } else {
0 commit comments