From d3748614355122d0fb39bc731f0fae3812bfeaf4 Mon Sep 17 00:00:00 2001 From: findolor Date: Mon, 24 Feb 2025 10:31:41 +0300 Subject: [PATCH] check for select tokens before getting token infos --- crates/js_api/src/gui/mod.rs | 25 +++++++++++++++++++++++-- crates/js_api/src/gui/select_tokens.rs | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/crates/js_api/src/gui/mod.rs b/crates/js_api/src/gui/mod.rs index 8dc8de73b..29a48d6ed 100644 --- a/crates/js_api/src/gui/mod.rs +++ b/crates/js_api/src/gui/mod.rs @@ -160,9 +160,28 @@ impl DotrainOrderGui { #[wasm_bindgen(js_name = "getAllTokenInfos")] pub async fn get_all_token_infos(&self) -> Result { - let token_infos = self.dotrain_order.orderbook_yaml().get_token_keys()?; + let select_tokens = self.get_select_tokens()?; + + let token_keys = match select_tokens.0.is_empty() { + true => { + let order_key = DeploymentCfg::parse_order_key( + self.dotrain_order.dotrain_yaml().documents, + &self.selected_deployment, + )?; + OrderCfg::parse_io_token_keys( + self.dotrain_order.dotrain_yaml().documents, + &order_key, + )? + } + false => select_tokens + .0 + .iter() + .map(|token| token.key.clone()) + .collect(), + }; + let mut result = Vec::new(); - for key in token_infos.iter() { + for key in token_keys.iter() { result.push(self.get_token_info(key.clone()).await?); } Ok(AllTokenInfos(result)) @@ -237,6 +256,8 @@ pub enum GuiError { DepositNotSet(String), #[error("Orderbook not found")] OrderbookNotFound, + #[error("Order not found: {0}")] + OrderNotFound(String), #[error("Deserialized dotrain mismatch")] DotrainMismatch, #[error("Vault id not found for output index: {0}")] diff --git a/crates/js_api/src/gui/select_tokens.rs b/crates/js_api/src/gui/select_tokens.rs index dd5d02960..76a8f92d8 100644 --- a/crates/js_api/src/gui/select_tokens.rs +++ b/crates/js_api/src/gui/select_tokens.rs @@ -6,7 +6,7 @@ use rain_orderbook_app_settings::{ use std::str::FromStr; #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Tsify)] -pub struct SelectTokens(Vec); +pub struct SelectTokens(pub Vec); impl_wasm_traits!(SelectTokens); #[wasm_bindgen]