diff options
| author | Eskil Q <eskilq@kth.se> | 2020-12-23 19:53:36 +0100 |
|---|---|---|
| committer | Eskil Q <eskilq@kth.se> | 2020-12-23 19:53:36 +0100 |
| commit | ded5b573004f867bc9fe9644d4d4fe3a81c48b99 (patch) | |
| tree | 5a03d1426461d403d917881839f2d67bebb473fa /mumd/src/state | |
| parent | 2902064db5c24ac30cb1a58fd44832b02ee478be (diff) | |
| download | mum-ded5b573004f867bc9fe9644d4d4fe3a81c48b99.tar.gz | |
remove mumlibs dependency on rust-mumble-protocol
Diffstat (limited to 'mumd/src/state')
| -rw-r--r-- | mumd/src/state/user.rs | 65 |
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 + } +} |
