11use dioxus:: prelude:: * ;
2+ use std:: collections:: BTreeMap ;
23use wasm_bindgen:: JsValue ;
34use wasm_bindgen_futures:: spawn_local;
45use serde_wasm_bindgen:: from_value;
56use wasm_bindgen:: closure:: Closure ;
7+ use crate :: metamask:: uniswap_v3:: V3PoolState ;
68use crate :: metamask:: { connect_metamask, MetamaskInfo , js_on_chain_changed, js_on_accounts_changed} ;
7- use crate :: vanillaswap:: swap_v2:: Swap ;
9+ use crate :: vanillaswap:: swap_v2:: PoolV2Swap ;
10+ use crate :: vanillaswap:: swap_v3:: PoolV3Swap ;
11+ use crate :: vanillaswap:: v3:: { use_sync_v3_pools, V3PoolInfo , UniswapV3PoolContext } ;
12+ use crate :: vanillaswap:: v2:: { use_sync_v2_pools, UniswapV2PoolContext } ;
13+ use crate :: metamask:: uniswap_v2:: V2PairInfo ;
814use crate :: wrapper:: Wrapper ;
915use crate :: vanillaswap:: pools_v2:: PoolV2Pairs ;
1016use crate :: vanillaswap:: pools_v3:: PoolV3Pairs ;
@@ -16,6 +22,7 @@ enum Tab {
1622 Wrap ,
1723 SwapV2 ,
1824 PoolV2 ,
25+ SwapV3 ,
1926 PoolV3 ,
2027}
2128
@@ -76,6 +83,41 @@ pub fn App() -> Element {
7683
7784 init_metamask_listeners ( ) ;
7885
86+ // uniswap v3
87+ {
88+ let pairs = use_signal ( || Vec :: < V3PoolInfo > :: new ( ) ) ;
89+ let pool_state = use_signal ( || BTreeMap :: new ( ) ) ;
90+ let is_loading = use_signal ( || false ) ;
91+ let error = use_signal ( || None ) ;
92+ let router_address = use_signal ( || "" . to_string ( ) ) ;
93+
94+ use_context_provider ( || UniswapV3PoolContext {
95+ pairs,
96+ pool_state,
97+ router_address,
98+ is_loading,
99+ error,
100+ } ) ;
101+
102+ use_sync_v3_pools ( ) ;
103+ }
104+
105+ {
106+ let is_loading = use_signal ( || false ) ;
107+ let pairs = use_signal ( || Vec :: < V2PairInfo > :: new ( ) ) ;
108+ let error = use_signal ( || None :: < String > ) ;
109+ let router_address = use_signal ( || "" . to_string ( ) ) ;
110+ use_context_provider ( || UniswapV2PoolContext {
111+ pairs,
112+ router_address,
113+ is_loading,
114+ error,
115+ } ) ;
116+
117+ use_sync_v2_pools ( ) ;
118+ }
119+
120+
79121 let on_connect = move |_| {
80122 let mut wallet = use_wallet ( ) ;
81123 spawn_local (
@@ -135,12 +177,19 @@ pub fn App() -> Element {
135177 "PoolsV2"
136178 }
137179
180+ button {
181+ class: button_class( Tab :: SwapV3 , active_tab( ) ) ,
182+ onclick: move |_| active_tab. set( Tab :: SwapV3 ) ,
183+ "SwapV3"
184+ }
185+
138186 button {
139187 class: button_class( Tab :: PoolV3 , active_tab( ) ) ,
140188 onclick: move |_| active_tab. set( Tab :: PoolV3 ) ,
141189 "PoolsV3"
142190 }
143191
192+
144193 }
145194
146195 if !short. is_empty( ) {
@@ -165,8 +214,9 @@ pub fn App() -> Element {
165214
166215 match * active_tab. read( ) {
167216 Tab :: Wrap => rsx!( Wrapper { } ) ,
168- Tab :: SwapV2 => rsx!( Swap { } ) ,
217+ Tab :: SwapV2 => rsx!( PoolV2Swap { } ) ,
169218 Tab :: PoolV2 => rsx!( PoolV2Pairs { } ) ,
219+ Tab :: SwapV3 => rsx!( PoolV3Swap { } ) ,
170220 Tab :: PoolV3 => rsx!( PoolV3Pairs { } ) ,
171221 }
172222 }
0 commit comments