From 04b467cc976fce39cadc9b488bccc9f5b498c605 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Fri, 24 Jan 2025 12:44:05 +0100 Subject: [PATCH] update_process also return commit_msg --- src/api.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/api.rs b/src/api.rs index 362b8e1..2a87f08 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1294,6 +1294,7 @@ pub fn create_new_process( } #[wasm_bindgen] +/// TODO allow modifications from user that doesn't have read access to all attributes pub fn update_process( process_id: String, new_state_str: String, @@ -1314,7 +1315,10 @@ pub fn update_process( let roles = clear_new_state.extract_roles()?; - let new_state = ProcessState::new(prev_state.commited_in, clear_new_state.to_value_object()?, last_state_descriptions.clone())?; + // We expect the whole set of attributes for now, even if value does'nt change since previous state + // We rehash everything with the new txid, so we need the clear value + // eventually we would like to be able to create partial states even if we don't have read access to some attributes + let new_state = ProcessState::new(process.get_process_tip()?, clear_new_state.to_value_object()?, last_state_descriptions.clone())?; // We compare the new state with the previous one let last_state_merkle_root = &prev_state.state_id; @@ -1337,13 +1341,16 @@ pub fn update_process( let updated_process = UpdatedProcess { commitment_tx: outpoint, current_process: process.clone(), - up_to_date_roles: roles, + up_to_date_roles: roles.clone(), new_diffs: diffs, ..Default::default() }; + let commit_msg = CommitMessage::new_update_commitment(outpoint, new_state.pcd_commitment, roles); + Ok(ApiReturn { updated_process: Some(updated_process), + commit_to_send: Some(commit_msg), ..Default::default() }) } @@ -1502,7 +1509,6 @@ fn add_validation_token(init_commitment: String, merkle_root_hex: String, approv // if the state is valid we also add a commit msg let update_is_valid = update_state.is_valid(process.get_parent_state(&update_state.commited_in)); if update_is_valid.is_ok() { - debug!("Adding the commit msg to return value"); let roles = match update_state.encrypted_pcd.extract_roles() { Ok(roles) => roles, Err(_) => {