summaryrefslogtreecommitdiff
path: root/crates/vcs_actions/src/actions
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2025-11-23 15:55:47 +0800
committer魏曹先生 <1992414357@qq.com>2025-11-23 15:55:47 +0800
commit891510df9b7c43216185d056a979eb5077570458 (patch)
tree55805140bd9ccdf318c60abc8f49f6f421414932 /crates/vcs_actions/src/actions
parentc1a50fbdddc5fad986f4b3b6310cc5167e68f87e (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/actions')
-rw-r--r--crates/vcs_actions/src/actions/local_actions.rs4
-rw-r--r--crates/vcs_actions/src/actions/sheet_actions.rs8
-rw-r--r--crates/vcs_actions/src/actions/virtual_file_actions.rs6
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,