diff --git a/src/api.rs b/src/api.rs index 8c47efd..68d6928 100644 --- a/src/api.rs +++ b/src/api.rs @@ -54,7 +54,7 @@ use sdk_common::sp_client::silentpayments::{ SilentPaymentAddress, Error as SpError, }; -use js_sys::{Object, Reflect, Uint8Array}; +use sdk_common::js_sys::{Object, Reflect, Uint8Array}; use sdk_common::{signature, MutexExt, MAX_PRD_PAYLOAD_SIZE}; use serde_json::{json, Error as SerdeJsonError, Map, Value}; @@ -1358,21 +1358,28 @@ pub fn update_process( #[wasm_bindgen] pub fn request_data(process_id: String, state_ids_str: Vec, roles: JsValue, members_list: OutPointMemberMap) -> ApiResult { + if state_ids_str.is_empty() { + return Err(ApiError::new("No state ids provided".to_owned())); + } let process_id = OutPoint::from_str(&process_id)?; + let roles: Vec = serde_wasm_bindgen::from_value(roles)?; let local_device = lock_local_device()?; let sender_pairing_id = local_device.get_pairing_commitment().ok_or(ApiError::new("Device not paired".to_owned()))?; let local_address = local_device.get_address().to_string(); - let roles: Vec = serde_wasm_bindgen::from_value(roles)?; let mut state_ids: Vec<[u8; 32]> = vec![]; for s in state_ids_str { - if (s.len() == 0 || s == String::from_utf8(Vec::from([0u8; 32])).unwrap()) { continue; } + if (s.len() == 0 || s.as_str() == EMPTYSTATEID) { continue; } let state_id: Result<[u8; 32], _> = Vec::from_hex(&s)?.try_into().map_err(|_| ApiError::new("Invalid state id".to_owned())); if let Ok(state_id) = state_id { state_ids.push(state_id); } } + if state_ids.is_empty() { + return Err(ApiError::new("No valid state ids provided".to_owned())); + } + let mut send_to: HashSet = HashSet::new(); for role in roles { for (_, role_def) in role {