Check if state_ids is not empty when requesting data

This commit is contained in:
Sosthene 2025-09-02 13:19:19 +02:00
parent e025c0da7b
commit e06917a5ac

View File

@ -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<String>, roles: JsValue, members_list: OutPointMemberMap) -> ApiResult<ApiReturn> {
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<Roles> = 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<Roles> = 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<SilentPaymentAddress> = HashSet::new();
for role in roles {
for (_, role_def) in role {