diff options
| author | Eskil Queseth <eskilq@kth.se> | 2020-11-03 21:08:46 +0100 |
|---|---|---|
| committer | Eskil Queseth <eskilq@kth.se> | 2020-11-03 21:08:46 +0100 |
| commit | 71941137265669013ef64473748c4fde6bc48f1c (patch) | |
| tree | da757f0cc43e9ce83f0a20dede1d8b6494f47291 /mumd/src/state.rs | |
| parent | 8fb4edd72dfcb2b71e91eedc5861360101374967 (diff) | |
| download | mum-71941137265669013ef64473748c4fde6bc48f1c.tar.gz | |
add mumd support for muting users
Diffstat (limited to 'mumd/src/state.rs')
| -rw-r--r-- | mumd/src/state.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 81b6c98..def5c03 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -217,6 +217,47 @@ impl State { self.reload_config(); now!(Ok(None)) } + Command::DeafenSelf => { + if !matches!(*self.phase_receiver().borrow(), StatePhase::Connected) { + return now!(Err(Error::DisconnectedError)); + } + + let mut msg = msgs::UserState::new(); + msg.set_self_deaf(true); + self.packet_sender.send(msg.into()).unwrap(); + + now!(Ok(None)) + } + Command::MuteSelf => { + if !matches!(*self.phase_receiver().borrow(), StatePhase::Connected) { + return now!(Err(Error::DisconnectedError)); + } + + let mut msg = msgs::UserState::new(); + msg.set_self_mute(true); + self.packet_sender.send(msg.into()).unwrap(); + + now!(Ok(None)) + } + Command::MuteOther(string) => { + if !matches!(*self.phase_receiver().borrow(), StatePhase::Connected) { + return now!(Err(Error::DisconnectedError)); + } + + let id = self.server().unwrap().users().iter().find(|(_, user)| user.name() == &string); + + let id = match id { + Some(id) => *id.0, + None => return now!(Err(Error::InvalidUserIdentifierError(string))), + }; + + let mut msg = msgs::UserState::new(); + msg.set_mute(true); + msg.set_session(id); + self.packet_sender.send(msg.into()).unwrap(); + + return now!(Ok(None)); + } } } |
