diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-01-03 20:31:38 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-01-03 20:31:38 +0800 |
| commit | 816ff19324e81a3354913695fc6a570598eb9358 (patch) | |
| tree | a8077b61047f80206003caf3e244d01f7d5ef1de /crates/vcs_actions | |
| parent | 3e0a3d131c3eca721858357621bcde8cc7b9423f (diff) | |
Include file histories in latest info updates
Diffstat (limited to 'crates/vcs_actions')
| -rw-r--r-- | crates/vcs_actions/src/actions/local_actions.rs | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/crates/vcs_actions/src/actions/local_actions.rs b/crates/vcs_actions/src/actions/local_actions.rs index 93ef4d5..1f764c9 100644 --- a/crates/vcs_actions/src/actions/local_actions.rs +++ b/crates/vcs_actions/src/actions/local_actions.rs @@ -28,7 +28,7 @@ use vcs_data::{ vault::{ config::VaultUuid, sheet_share::{Share, SheetShareId}, - virtual_file::{VirtualFileId, VirtualFileVersion}, + virtual_file::{VirtualFileId, VirtualFileVersion, VirtualFileVersionDescription}, }, }, }; @@ -366,8 +366,14 @@ pub async fn update_to_latest_info_action( .await?; // Receive information and write to local - let result: HashMap<VirtualFileId, (Option<MemberId>, VirtualFileVersion)> = - mut_instance.read_large_msgpack(1024u16).await?; + let result: HashMap< + VirtualFileId, + ( + Option<MemberId>, + VirtualFileVersion, + Vec<(VirtualFileVersion, VirtualFileVersionDescription)>, + ), + > = mut_instance.read_large_msgpack(1024u16).await?; // Read configuration file let path = LatestFileData::data_path(&member_id)?; @@ -390,8 +396,14 @@ pub async fn update_to_latest_info_action( mut_instance.read_large_msgpack(1024u16).await?; // Organize the information - let mut result: HashMap<VirtualFileId, (Option<MemberId>, VirtualFileVersion)> = - HashMap::new(); + let mut result: HashMap< + VirtualFileId, + ( + Option<MemberId>, + VirtualFileVersion, + Vec<(VirtualFileVersion, VirtualFileVersionDescription)>, + ), + > = HashMap::new(); for id in holder_wants_know { let Ok(meta) = vault.virtual_file_meta(&id).await else { continue; @@ -401,8 +413,21 @@ pub async fn update_to_latest_info_action( } else { Some(meta.hold_member().clone()) }; - let version = meta.version_latest(); - result.insert(id, (holder, version)); + let latest_version = meta.version_latest(); + + let all_versions = meta.versions(); + let all_descriptions = meta.version_descriptions(); + let histories = all_versions + .iter() + .filter_map(|v| { + let Some(desc) = all_descriptions.get(v) else { + return None; + }; + Some((v.clone(), desc.clone())) + }) + .collect::<Vec<(VirtualFileVersion, VirtualFileVersionDescription)>>(); + + result.insert(id, (holder, latest_version, histories)); } // Send information |
