fix(wasm): fix wasm function to return the categories for keys with their description respectively (#3023)

This commit is contained in:
Amisha Prabhat
2023-12-01 13:29:14 +05:30
committed by GitHub
parent 5edabae701
commit 2ac5b2cd76
2 changed files with 22 additions and 8 deletions

View File

@ -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())?;
let result = types::Details {
description: key.get_detailed_message(),
category: key.get_str("Category"),
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(),
};
Ok(serde_wasm_bindgen::to_value(&result)?)
category
.entry(dir_key.get_str("Category"))
.and_modify(|val| val.push(details.clone()))
.or_insert(vec![details]);
}
Ok(serde_wasm_bindgen::to_value(&category)?)
}

View File

@ -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,
}