Skip to content

Commit

Permalink
fix(wasm): fix wasm function to return the categories for keys with t…
Browse files Browse the repository at this point in the history
…heir description respectively (juspay#3023)
  • Loading branch information
Aprabhat19 authored Dec 1, 2023
1 parent 5edabae commit 2ac5b2c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
27 changes: 20 additions & 7 deletions crates/euclid_wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,12 +254,25 @@ pub fn add_two(n1: i64, n2: i64) -> i64 {
}

#[wasm_bindgen(js_name = getDescriptionCategory)]
pub fn get_description_category(key: &str) -> JsResult {
let key = dir::DirKeyKind::from_str(key).map_err(|_| "Invalid key received".to_string())?;
pub fn get_description_category() -> JsResult {
let keys = dir::DirKeyKind::VARIANTS
.iter()
.copied()
.filter(|s| s != &"Connector")
.collect::<Vec<&'static str>>();
let mut category: HashMap<Option<&str>, Vec<types::Details<'_>>> = HashMap::new();
for key in keys {
let dir_key =
dir::DirKeyKind::from_str(key).map_err(|_| "Invalid key received".to_string())?;
let details = types::Details {
description: dir_key.get_detailed_message(),
kind: dir_key.clone(),
};
category
.entry(dir_key.get_str("Category"))
.and_modify(|val| val.push(details.clone()))
.or_insert(vec![details]);
}

let result = types::Details {
description: key.get_detailed_message(),
category: key.get_str("Category"),
};
Ok(serde_wasm_bindgen::to_value(&result)?)
Ok(serde_wasm_bindgen::to_value(&category)?)
}
3 changes: 2 additions & 1 deletion crates/euclid_wasm/src/types.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use euclid::frontend::dir::DirKeyKind;
use serde::Serialize;

#[derive(Serialize, Clone)]
pub struct Details<'a> {
pub description: Option<&'a str>,
pub category: Option<&'a str>,
pub kind: DirKeyKind,
}

0 comments on commit 2ac5b2c

Please sign in to comment.