Add roles as argument to request_data
This commit is contained in:
parent
8d2c34b13b
commit
544e8989c6
32
src/api.rs
32
src/api.rs
@ -1396,35 +1396,27 @@ pub fn update_process(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn request_data(process_id: String, state_ids: Vec<String>) -> ApiResult<ApiReturn> {
|
pub fn request_data(process_id: String, state_ids: Vec<String>, roles: JsValue) -> ApiResult<ApiReturn> {
|
||||||
let process_id = OutPoint::from_str(&process_id)?;
|
let process_id = OutPoint::from_str(&process_id)?;
|
||||||
let local_device = lock_local_device()?;
|
let local_device = lock_local_device()?;
|
||||||
let sender = local_device.to_member();
|
let sender = local_device.to_member();
|
||||||
let sp_wallet = local_device.get_wallet();
|
let sp_wallet = local_device.get_wallet();
|
||||||
let local_address = sp_wallet.get_client().get_receiving_address();
|
let local_address = sp_wallet.get_client().get_receiving_address();
|
||||||
|
let roles: Vec<BTreeMap<String, RoleDefinition>> = serde_wasm_bindgen::from_value(roles)?;
|
||||||
|
|
||||||
let mut send_to: HashSet<SilentPaymentAddress> = HashSet::new();
|
let mut send_to: HashSet<SilentPaymentAddress> = HashSet::new();
|
||||||
let processes = lock_processes()?;
|
for role in roles {
|
||||||
let process = processes.get(&process_id).ok_or(ApiError::new("Unknown process".to_owned()))?;
|
for (_, role_def) in role {
|
||||||
for state_id in &state_ids {
|
let members = &role_def.members;
|
||||||
if let Ok(state) = process.get_state_for_id(&state_id) {
|
if !members.contains(&sender) {
|
||||||
let roles = &state.roles;
|
continue;
|
||||||
for (_, role_def) in roles {
|
}
|
||||||
let members = &role_def.members;
|
for member in members {
|
||||||
if !members.contains(&sender) {
|
for address in member.get_addresses() {
|
||||||
continue;
|
if address == local_address { continue };
|
||||||
}
|
send_to.insert(SilentPaymentAddress::try_from(address).unwrap());
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user