Add more error control

This commit is contained in:
Sosthene 2024-09-02 14:45:35 +02:00
parent cf3278dd3d
commit b7bffe7678

View File

@ -571,10 +571,11 @@ pub fn create_process_init_transaction(
fee_rate: u32,
) -> ApiResult<createTransactionReturn> {
let pcd = new_process.init_state;
let roles = pcd["roles"].as_object().unwrap().clone();
let roles = pcd.get("roles").ok_or(ApiError { message: "No roles in init_state".to_owned()})?;
let roles_map = roles.as_object().ok_or(ApiError { message: "roles is not an object".to_owned()})?.clone();
let mut all_members: HashMap<Member, HashSet<String>> = HashMap::new();
for (name, role_def) in roles {
let role: RoleDefinition = serde_json::from_str(&role_def.to_string()).unwrap();
for (name, role_def) in roles_map {
let role: RoleDefinition = serde_json::from_str(&role_def.to_string())?;
let fields: Vec<String> = role.validation_rules.iter().flat_map(|rule| rule.fields.clone()).collect();
for member in role.members {
if !all_members.contains_key(&member) {
@ -615,7 +616,7 @@ pub fn create_process_init_transaction(
let sp_wallet = local_device.get_wallet();
let sender: Member = local_device.to_member().unwrap();
let sender: Member = local_device.to_member().ok_or(ApiError { message: "unpaired device".to_owned() })?;
// We first generate the prd with all the keys that we will keep to ourselves
let full_prd = Prd::new(
@ -665,7 +666,7 @@ pub fn create_process_init_transaction(
let addresses = member.get_addresses();
for sp_address in addresses.into_iter() {
let shared_point = sp_utils::sending::calculate_ecdh_shared_secret(
&<SilentPaymentAddress>::try_from(sp_address).unwrap().get_scan_key(),
&<SilentPaymentAddress>::try_from(sp_address)?.get_scan_key(),
&partial_secret,
);