From b4661072366c4dcc63e914f2ec8625ad73b14645 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 5 Jan 2026 15:10:18 +0800 Subject: Add RejectAll mode for share merging and fix share ID trimming - Add ShareMergeMode::RejectAll variant to reject all incoming shares - Trim server suffix from share IDs when updating local sheet info - Sign vault as modified after successful share mapping merge - Fix get_current_sheet_name call to use correct parameter value --- crates/vcs_actions/src/actions/local_actions.rs | 10 +++++++--- crates/vcs_actions/src/actions/sheet_actions.rs | 8 +++++++- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'crates/vcs_actions/src') diff --git a/crates/vcs_actions/src/actions/local_actions.rs b/crates/vcs_actions/src/actions/local_actions.rs index 1f764c9..53a1ff8 100644 --- a/crates/vcs_actions/src/actions/local_actions.rs +++ b/crates/vcs_actions/src/actions/local_actions.rs @@ -13,7 +13,8 @@ use serde::{Deserialize, Serialize}; use tcp_connection::error::TcpTargetError; use vcs_data::{ constants::{ - CLIENT_PATH_CACHED_SHEET, CLIENT_PATH_LOCAL_SHEET, REF_SHEET_NAME, VAULT_HOST_NAME, + CLIENT_PATH_CACHED_SHEET, CLIENT_PATH_LOCAL_SHEET, REF_SHEET_NAME, + SERVER_SUFFIX_SHEET_SHARE_FILE, VAULT_HOST_NAME, }, data::{ local::{ @@ -172,7 +173,7 @@ pub async fn update_to_latest_info_action( for sheet in vault.sheets().await? { // Build share parts if let Some(holder) = sheet.holder() { - if holder == &member_id { + if holder == &member_id || holder == VAULT_HOST_NAME { let mut sheet_shares: HashMap = HashMap::new(); for share in sheet.get_shares().await? { // Get SharePath @@ -183,7 +184,10 @@ pub async fn update_to_latest_info_action( let Some(share_id) = share_path.file_name() else { continue; }; - sheet_shares.insert(share_id.display().to_string(), share); + let share_id = share_id.display().to_string(); + let share_id_trimed = + share_id.trim_end_matches(SERVER_SUFFIX_SHEET_SHARE_FILE); + sheet_shares.insert(share_id_trimed.to_string(), share); } shares_in_my_sheets.insert(sheet.name().clone(), sheet_shares); } diff --git a/crates/vcs_actions/src/actions/sheet_actions.rs b/crates/vcs_actions/src/actions/sheet_actions.rs index 759c275..7c63a2f 100644 --- a/crates/vcs_actions/src/actions/sheet_actions.rs +++ b/crates/vcs_actions/src/actions/sheet_actions.rs @@ -400,7 +400,7 @@ pub async fn share_mapping_action( // Check sheet let sheet_name = args.from_sheet.unwrap_or( - get_current_sheet_name(&ctx, instance, &member_id, false) + get_current_sheet_name(&ctx, instance, &member_id, true) .await? .0, ); @@ -569,6 +569,12 @@ pub async fn merge_share_mapping_action( .await .read::() .await?; + match result { + MergeShareMappingActionResult::Success => { + sign_vault_modified(true).await; + } + _ => {} + } return Ok(result); } -- cgit