From dea59dad70681d3eb86f5212932a2e242e225cbb Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Mon, 3 Nov 2025 18:49:13 +0800 Subject: update: Local actions and data structures - Update local actions implementation - Improve latest info handling - Enhance vault sheets management --- crates/vcs_actions/src/actions/local_actions.rs | 15 ++++++++++++--- crates/vcs_data/src/data/local/latest_info.rs | 10 ++++++++-- crates/vcs_data/src/data/vault/sheets.rs | 2 +- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/crates/vcs_actions/src/actions/local_actions.rs b/crates/vcs_actions/src/actions/local_actions.rs index 87eafb8..da9fc62 100644 --- a/crates/vcs_actions/src/actions/local_actions.rs +++ b/crates/vcs_actions/src/actions/local_actions.rs @@ -6,7 +6,10 @@ use log::{info, warn}; use serde::{Deserialize, Serialize}; use tcp_connection::error::TcpTargetError; use vcs_data::data::{ - local::{config::LocalConfig, latest_info::LatestInfo}, + local::{ + config::LocalConfig, + latest_info::{LatestInfo, SheetInfo}, + }, vault::config::VaultUuid, }; @@ -108,10 +111,16 @@ pub async fn update_to_latest_info_action( let mut member_visible = Vec::new(); for sheet in vault.sheets().await? { - if sheet.holder() == &member_id { + if sheet.holder().is_some() && sheet.holder().unwrap() == &member_id { member_owned.push(sheet.name().clone()); } else { - member_visible.push(sheet.name().clone()); + member_visible.push(SheetInfo { + sheet_name: sheet.name().clone(), + holder_name: match sheet.holder() { + Some(holder) => Some(holder.clone()), + None => None, + }, + }); } } diff --git a/crates/vcs_data/src/data/local/latest_info.rs b/crates/vcs_data/src/data/local/latest_info.rs index 5a76277..6b116d8 100644 --- a/crates/vcs_data/src/data/local/latest_info.rs +++ b/crates/vcs_data/src/data/local/latest_info.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; use crate::{ constants::CLIENT_FILE_LATEST_INFO, data::{ - member::Member, + member::{Member, MemberId}, sheet::{SheetData, SheetName}, }, }; @@ -16,7 +16,7 @@ pub struct LatestInfo { /// My sheets, indicating which sheets I can edit pub my_sheets: Vec, /// Other sheets, indicating which sheets I can export files to (these sheets are not readable to me) - pub other_sheets: Vec, + pub other_sheets: Vec, /// Reference sheet data, indicating what files I can get from the reference sheet pub ref_sheet_content: SheetData, @@ -26,3 +26,9 @@ pub struct LatestInfo { } impl LatestInfo {} + +#[derive(Default, Serialize, Deserialize)] +pub struct SheetInfo { + pub sheet_name: SheetName, + pub holder_name: Option, +} diff --git a/crates/vcs_data/src/data/vault/sheets.rs b/crates/vcs_data/src/data/vault/sheets.rs index 0bba4f5..1407350 100644 --- a/crates/vcs_data/src/data/vault/sheets.rs +++ b/crates/vcs_data/src/data/vault/sheets.rs @@ -130,7 +130,7 @@ impl Vault { // Create the sheet file let sheet_data = SheetData { - holder: holder.clone(), + holder: Some(holder.clone()), inputs: Vec::new(), mapping: HashMap::new(), }; -- cgit