summaryrefslogtreecommitdiff
path: root/crates/vcs_data/src/data
diff options
context:
space:
mode:
Diffstat (limited to 'crates/vcs_data/src/data')
-rw-r--r--crates/vcs_data/src/data/local/config.rs7
-rw-r--r--crates/vcs_data/src/data/local/latest_info.rs14
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,