diff options
| author | 魏曹先生 <1992414357@qq.com> | 2025-11-23 15:55:47 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2025-11-23 15:55:47 +0800 |
| commit | 891510df9b7c43216185d056a979eb5077570458 (patch) | |
| tree | 55805140bd9ccdf318c60abc8f49f6f421414932 /crates/vcs_actions/src | |
| parent | c1a50fbdddc5fad986f4b3b6310cc5167e68f87e (diff) | |
Add vault modification tracking
- Record vault state changes in sheet operations - Track modifications
when creating, dropping, or updating sheets - Mark vault as unmodified
after syncing with upstream - Add vault_modified module with check and
sign functions
Diffstat (limited to 'crates/vcs_actions/src')
| -rw-r--r-- | crates/vcs_actions/src/actions/local_actions.rs | 4 | ||||
| -rw-r--r-- | crates/vcs_actions/src/actions/sheet_actions.rs | 8 | ||||
| -rw-r--r-- | crates/vcs_actions/src/actions/virtual_file_actions.rs | 6 |
3 files changed, 16 insertions, 2 deletions
diff --git a/crates/vcs_actions/src/actions/local_actions.rs b/crates/vcs_actions/src/actions/local_actions.rs index e1c7dd9..9bd50c7 100644 --- a/crates/vcs_actions/src/actions/local_actions.rs +++ b/crates/vcs_actions/src/actions/local_actions.rs @@ -14,6 +14,7 @@ use vcs_data::{ config::LocalConfig, latest_file_data::LatestFileData, latest_info::{LatestInfo, SheetInfo}, + vault_modified::sign_vault_modified, }, member::MemberId, sheet::{SheetData, SheetName}, @@ -448,6 +449,9 @@ pub async fn update_to_latest_info_action( } } + if ctx.is_proc_on_local() { + sign_vault_modified(false).await; + } Ok(UpdateToLatestInfoResult::Success) } diff --git a/crates/vcs_actions/src/actions/sheet_actions.rs b/crates/vcs_actions/src/actions/sheet_actions.rs index e529642..ff467d9 100644 --- a/crates/vcs_actions/src/actions/sheet_actions.rs +++ b/crates/vcs_actions/src/actions/sheet_actions.rs @@ -3,7 +3,7 @@ use std::io::ErrorKind; use action_system::{action::ActionContext, macros::action_gen}; use serde::{Deserialize, Serialize}; use tcp_connection::error::TcpTargetError; -use vcs_data::data::sheet::SheetName; +use vcs_data::data::{local::vault_modified::sign_vault_modified, sheet::SheetName}; use crate::{ actions::{auth_member, check_connection_instance, try_get_local_workspace, try_get_vault}, @@ -82,6 +82,9 @@ pub async fn make_sheet_action( .await .read::<MakeSheetActionResult>() .await?; + if matches!(result, MakeSheetActionResult::Success) { + sign_vault_modified(true).await; + } return Ok(result); } @@ -188,6 +191,9 @@ pub async fn drop_sheet_action( .await .read::<DropSheetActionResult>() .await?; + if matches!(result, DropSheetActionResult::Success) { + sign_vault_modified(true).await; + } return Ok(result); } diff --git a/crates/vcs_actions/src/actions/virtual_file_actions.rs b/crates/vcs_actions/src/actions/virtual_file_actions.rs index 3760444..2e6a452 100644 --- a/crates/vcs_actions/src/actions/virtual_file_actions.rs +++ b/crates/vcs_actions/src/actions/virtual_file_actions.rs @@ -12,7 +12,7 @@ use tokio::sync::Mutex; use vcs_data::data::{ local::{ cached_sheet::CachedSheet, file_status::AnalyzeResult, latest_file_data::LatestFileData, - local_sheet::LocalMappingMetadata, + local_sheet::LocalMappingMetadata, vault_modified::sign_vault_modified, }, member::MemberId, sheet::SheetName, @@ -264,6 +264,10 @@ pub async fn track_file_action( Err(e) => return Err(e), }; + if success_create.len() + success_update.len() > 0 { + sign_vault_modified(true).await; + } + return Ok(TrackFileActionResult::Done { created: success_create, updated: success_update, |
