aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/state.rs
diff options
context:
space:
mode:
authorEskil Queseth <eskilq@kth.se>2020-11-03 21:08:46 +0100
committerEskil Queseth <eskilq@kth.se>2020-11-03 21:08:46 +0100
commit71941137265669013ef64473748c4fde6bc48f1c (patch)
treeda757f0cc43e9ce83f0a20dede1d8b6494f47291 /mumd/src/state.rs
parent8fb4edd72dfcb2b71e91eedc5861360101374967 (diff)
downloadmum-71941137265669013ef64473748c4fde6bc48f1c.tar.gz
add mumd support for muting users
Diffstat (limited to 'mumd/src/state.rs')
-rw-r--r--mumd/src/state.rs41
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));
+ }
}
}