aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/state
diff options
context:
space:
mode:
authorEskil Q <eskilq@kth.se>2020-12-23 19:53:36 +0100
committerEskil Q <eskilq@kth.se>2020-12-23 19:53:36 +0100
commitded5b573004f867bc9fe9644d4d4fe3a81c48b99 (patch)
tree5a03d1426461d403d917881839f2d67bebb473fa /mumd/src/state
parent2902064db5c24ac30cb1a58fd44832b02ee478be (diff)
downloadmum-ded5b573004f867bc9fe9644d4d4fe3a81c48b99.tar.gz
remove mumlibs dependency on rust-mumble-protocol
Diffstat (limited to 'mumd/src/state')
-rw-r--r--mumd/src/state/user.rs65
1 files changed, 64 insertions, 1 deletions
diff --git a/mumd/src/state/user.rs b/mumd/src/state/user.rs
index 913f91b..5770bca 100644
--- a/mumd/src/state/user.rs
+++ b/mumd/src/state/user.rs
@@ -78,7 +78,7 @@ impl User {
}
}
- pub fn apply_user_diff(&mut self, diff: &mumlib::state::UserDiff) {
+ pub fn apply_user_diff(&mut self, diff: &crate::state::user::UserDiff) {
if let Some(comment) = diff.comment.clone() {
self.comment = Some(comment);
}
@@ -155,3 +155,66 @@ impl From<&User> for mumlib::state::User {
}
}
}
+
+#[derive(Debug, Default)]
+pub struct UserDiff {
+ pub comment: Option<String>,
+ pub hash: Option<String>,
+ pub name: Option<String>,
+ pub priority_speaker: Option<bool>,
+ pub recording: Option<bool>,
+
+ pub suppress: Option<bool>, // by me
+ pub self_mute: Option<bool>, // by self
+ pub self_deaf: Option<bool>, // by self
+ pub mute: Option<bool>, // by admin
+ pub deaf: Option<bool>, // by admin
+
+ pub channel_id: Option<u32>,
+}
+
+impl UserDiff {
+ pub fn new() -> Self {
+ UserDiff::default()
+ }
+}
+
+impl From<msgs::UserState> for UserDiff {
+ fn from(mut msg: msgs::UserState) -> Self {
+ let mut ud = UserDiff::new();
+ if msg.has_comment() {
+ ud.comment = Some(msg.take_comment());
+ }
+ if msg.has_hash() {
+ ud.hash = Some(msg.take_hash());
+ }
+ if msg.has_name() {
+ ud.name = Some(msg.take_name());
+ }
+ if msg.has_priority_speaker() {
+ ud.priority_speaker = Some(msg.get_priority_speaker());
+ }
+ if msg.has_recording() {
+ ud.recording = Some(msg.get_recording());
+ }
+ if msg.has_suppress() {
+ ud.suppress = Some(msg.get_suppress());
+ }
+ if msg.has_self_mute() {
+ ud.self_mute = Some(msg.get_self_mute());
+ }
+ if msg.has_self_deaf() {
+ ud.self_deaf = Some(msg.get_self_deaf());
+ }
+ if msg.has_mute() {
+ ud.mute = Some(msg.get_mute());
+ }
+ if msg.has_deaf() {
+ ud.deaf = Some(msg.get_deaf());
+ }
+ if msg.has_channel_id() {
+ ud.channel_id = Some(msg.get_channel_id());
+ }
+ ud
+ }
+}