summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-01-02 17:22:00 +0800
committer魏曹先生 <1992414357@qq.com>2026-01-02 17:22:00 +0800
commite982cd090efc8786f32818cfd26b2c07dd801930 (patch)
treee45598db53d84c00a8e439001994dfe20122e637
parent46e5887d1829cf9aade17aa6e716fcb39ff29878 (diff)
Add ref sheet VFS mapping to LatestInfo
This adds a reverse mapping from virtual file IDs to their actual paths in reference sheets, which is needed for proper file resolution during operations that reference files by ID.
-rw-r--r--crates/vcs_actions/src/actions/local_actions.rs9
-rw-r--r--crates/vcs_data/src/data/local/latest_info.rs10
2 files changed, 15 insertions, 4 deletions
diff --git a/crates/vcs_actions/src/actions/local_actions.rs b/crates/vcs_actions/src/actions/local_actions.rs
index d3f718d..8799930 100644
--- a/crates/vcs_actions/src/actions/local_actions.rs
+++ b/crates/vcs_actions/src/actions/local_actions.rs
@@ -24,7 +24,7 @@ use vcs_data::{
vault_modified::sign_vault_modified,
},
member::MemberId,
- sheet::{SheetData, SheetName},
+ sheet::{SheetData, SheetName, SheetPathBuf},
vault::{
config::VaultUuid,
sheet_share::{Share, SheetShareId},
@@ -214,7 +214,12 @@ pub async fn update_to_latest_info_action(
// RefSheet
let ref_sheet_data = vault.sheet(&REF_SHEET_NAME.to_string()).await?.to_data();
- latest_info.ref_sheet_content = ref_sheet_data;
+ latest_info.ref_sheet_content = ref_sheet_data.clone();
+ latest_info.ref_sheet_vfs_mapping = ref_sheet_data
+ .mapping()
+ .into_iter()
+ .map(|(path, file)| (file.id.clone(), path.clone()))
+ .collect::<HashMap<VirtualFileId, SheetPathBuf>>();
latest_info.reference_sheets = ref_sheets;
// Members
diff --git a/crates/vcs_data/src/data/local/latest_info.rs b/crates/vcs_data/src/data/local/latest_info.rs
index 27409be..a2456fc 100644
--- a/crates/vcs_data/src/data/local/latest_info.rs
+++ b/crates/vcs_data/src/data/local/latest_info.rs
@@ -11,8 +11,11 @@ use crate::{
constants::{CLIENT_FILE_LATEST_INFO, CLIENT_FILE_LATEST_INFO_NOSET},
data::{
member::{Member, MemberId},
- sheet::{SheetData, SheetName},
- vault::sheet_share::{Share, SheetShareId},
+ sheet::{SheetData, SheetName, SheetPathBuf},
+ vault::{
+ sheet_share::{Share, SheetShareId},
+ virtual_file::VirtualFileId,
+ },
},
};
@@ -41,6 +44,9 @@ pub struct LatestInfo {
/// Reference sheet data, indicating what files I can get from the reference sheet
pub ref_sheet_content: SheetData,
+ /// Reverse mapping from virtual file IDs to actual paths in reference sheets
+ pub ref_sheet_vfs_mapping: HashMap<VirtualFileId, SheetPathBuf>,
+
/// Shares in my sheets, indicating which external merge requests have entries that I can view
pub shares_in_my_sheets: HashMap<SheetName, HashMap<SheetShareId, Share>>,