diff options
| author | 魏曹先生 <1992414357@qq.com> | 2025-11-17 20:29:27 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2025-11-17 20:29:27 +0800 |
| commit | f73c4c0071bb37430cbf48f7e2d06dcdedb2c8ec (patch) | |
| tree | dc29c89087f7f584ea07a8e3ecf1e71184de82e6 /crates/vcs_data/src/data | |
| parent | 7b97b52af021500d8085c875d20215e8dc0f53cc (diff) | |
Use member-specific paths for latest info files
Diffstat (limited to 'crates/vcs_data/src/data')
| -rw-r--r-- | crates/vcs_data/src/data/local/config.rs | 7 | ||||
| -rw-r--r-- | crates/vcs_data/src/data/local/latest_info.rs | 14 |
2 files changed, 18 insertions, 3 deletions
diff --git a/crates/vcs_data/src/data/local/config.rs b/crates/vcs_data/src/data/local/config.rs index fa3b607..c51147c 100644 --- a/crates/vcs_data/src/data/local/config.rs +++ b/crates/vcs_data/src/data/local/config.rs @@ -97,7 +97,12 @@ impl LocalConfig { let local_path = self.get_local_path().await?; // Get latest info - let Ok(latest_info) = LatestInfo::read().await else { + let Ok(latest_info) = LatestInfo::read_from(LatestInfo::latest_info_path( + &local_path, + &self.current_account(), + )) + .await + else { return Err(std::io::Error::new( std::io::ErrorKind::NotFound, "No latest info found", diff --git a/crates/vcs_data/src/data/local/latest_info.rs b/crates/vcs_data/src/data/local/latest_info.rs index e4f45b1..bc13ae9 100644 --- a/crates/vcs_data/src/data/local/latest_info.rs +++ b/crates/vcs_data/src/data/local/latest_info.rs @@ -5,18 +5,21 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; use tokio::time::Instant; use crate::{ - constants::CLIENT_FILE_LATEST_INFO, + constants::{CLIENT_FILE_LATEST_INFO, CLIENT_FILE_LATEST_INFO_NOSET}, data::{ + local::{LocalWorkspace, config::LocalConfig}, member::{Member, MemberId}, sheet::{SheetData, SheetName}, }, }; +const ACCOUNT: &str = "{account}"; + /// # Latest Info /// Locally cached latest information, /// used to cache personal information from upstream for querying and quickly retrieving member information. #[derive(Default, Serialize, Deserialize, ConfigFile)] -#[cfg_file(path = CLIENT_FILE_LATEST_INFO)] +#[cfg_file(path = CLIENT_FILE_LATEST_INFO_NOSET)] pub struct LatestInfo { // Sheets /// My sheets, indicating which sheets I can edit @@ -38,6 +41,13 @@ pub struct LatestInfo { pub vault_members: Vec<Member>, } +impl LatestInfo { + /// Get the path to the latest info file for a given workspace and member ID + pub fn latest_info_path(local_workspace_path: &PathBuf, member_id: &MemberId) -> PathBuf { + local_workspace_path.join(CLIENT_FILE_LATEST_INFO.replace(ACCOUNT, member_id)) + } +} + #[derive(Default, Serialize, Deserialize)] pub struct SheetInfo { pub sheet_name: SheetName, |
