diff --git a/src/api.rs b/src/api.rs index ecbd42e..8652e1e 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1396,35 +1396,27 @@ pub fn update_process( } #[wasm_bindgen] -pub fn request_data(process_id: String, state_ids: Vec) -> ApiResult { +pub fn request_data(process_id: String, state_ids: Vec, roles: JsValue) -> ApiResult { let process_id = OutPoint::from_str(&process_id)?; let local_device = lock_local_device()?; let sender = local_device.to_member(); let sp_wallet = local_device.get_wallet(); let local_address = sp_wallet.get_client().get_receiving_address(); + let roles: Vec> = serde_wasm_bindgen::from_value(roles)?; let mut send_to: HashSet = HashSet::new(); - let processes = lock_processes()?; - let process = processes.get(&process_id).ok_or(ApiError::new("Unknown process".to_owned()))?; - for state_id in &state_ids { - if let Ok(state) = process.get_state_for_id(&state_id) { - let roles = &state.roles; - for (_, role_def) in roles { - let members = &role_def.members; - if !members.contains(&sender) { - continue; - } - for member in members { - for address in member.get_addresses() { - if address == local_address { continue }; - send_to.insert(SilentPaymentAddress::try_from(address).unwrap()); - } + for role in roles { + for (_, role_def) in role { + let members = &role_def.members; + if !members.contains(&sender) { + continue; + } + for member in members { + for address in member.get_addresses() { + if address == local_address { continue }; + send_to.insert(SilentPaymentAddress::try_from(address).unwrap()); } } - } else { - // Ignoring unknown state - log::error!("Unknown state"); - continue; } }