summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/vcs_actions/src/actions/local_actions.rs15
-rw-r--r--crates/vcs_data/src/data/local/latest_info.rs10
-rw-r--r--crates/vcs_data/src/data/vault/sheets.rs2
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<SheetName>,
/// Other sheets, indicating which sheets I can export files to (these sheets are not readable to me)
- pub other_sheets: Vec<SheetName>,
+ pub other_sheets: Vec<SheetInfo>,
/// 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<MemberId>,
+}
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(),
};