summaryrefslogtreecommitdiff
path: root/crates/vcs_data/src/data/local/member_held.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/vcs_data/src/data/local/member_held.rs')
-rw-r--r--crates/vcs_data/src/data/local/member_held.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/vcs_data/src/data/local/member_held.rs b/crates/vcs_data/src/data/local/member_held.rs
new file mode 100644
index 0000000..e9e384d
--- /dev/null
+++ b/crates/vcs_data/src/data/local/member_held.rs
@@ -0,0 +1,25 @@
+use std::collections::HashMap;
+
+use cfg_file::ConfigFile;
+use serde::{Deserialize, Serialize};
+
+use crate::{
+ constants::CLIENT_FILE_MEMBER_HELD_NOSET,
+ data::{member::MemberId, vault::virtual_file::VirtualFileId},
+};
+
+#[derive(Debug, Default, Clone, Serialize, Deserialize, ConfigFile)]
+#[cfg_file(path = CLIENT_FILE_MEMBER_HELD_NOSET)]
+pub struct MemberHeld {
+ /// File holding status
+ held_status: HashMap<VirtualFileId, HeldStatus>,
+}
+
+#[derive(Debug, Default, Clone, Serialize, Deserialize)]
+pub enum HeldStatus {
+ HeldWith(MemberId), // Held, status changes are sync to the client
+ NotHeld, // Not held, status changes are sync to the client
+
+ #[default]
+ WantedToKnow, // Holding status is unknown, notify server must inform client
+}