From 7d55907189a7e5210843efcb3e74f345d594a673 Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Thu, 12 Nov 2020 22:56:27 +0100 Subject: clean up bad code --- mumd/src/state.rs | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'mumd') diff --git a/mumd/src/state.rs b/mumd/src/state.rs index a767d30..0395b4f 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -431,6 +431,8 @@ impl State { None }; + debug!("{:?} {:?} {:?}", mute, deaf, msg); + let diff = UserDiff::from(msg); user.apply_user_diff(&diff); let user = self.server().unwrap().users().get(&session).unwrap(); @@ -449,31 +451,36 @@ impl State { } } + let notify_desc = match (mute, deaf) { + (Some(true), Some(true)) => Some(format!("{} muted and deafend themselves", &user.name())), + (Some(false), Some(false)) => Some(format!("{} unmuted and undeafend themselves", &user.name())), + (None, Some(true)) => Some(format!("{} deafend themselves", &user.name())), + (None, Some(false)) => Some(format!("{} undeafend themselves", &user.name())), + (Some(true), None) => Some(format!("{} muted themselves", &user.name())), + (Some(false), None) => Some(format!("{} unmuted themselves", &user.name())), + (Some(true), Some(false)) => Some(format!("{} muted and undeafened themselves", &user.name())), + (Some(false), Some(true)) => Some(format!("{} unmuted and deafened themselves", &user.name())), + (None, None) => None, + }; // send notification if a user muted/unmuted //TODO our channel only - let notif_desc = if let Some(deaf) = deaf { + /*let notif_desc = if let Some(deaf) = deaf { if deaf { Some(format!("{} muted and deafend themselves", &user.name())) - } else if !deaf { - Some(format!("{} unmuted and undeafend themselves", &user.name())) } else { - warn!("Invalid user state received"); - None + Some(format!("{} unmuted and undeafend themselves", &user.name())) } } else if let Some(mute) = mute { if mute { Some(format!("{} muted themselves", &user.name())) - } else if !mute { - Some(format!("{} unmuted themselves", &user.name())) } else { - warn!("Invalid user state received"); - None + Some(format!("{} unmuted themselves", &user.name())) } } else { None - }; - if let Some(notif_desc) = notif_desc { - notify::send(notif_desc); + };*/ + if let Some(notify_desc) = notify_desc { + notify::send(notify_desc); } diff -- cgit v1.2.1 From 6e5edfc33b54a20ed04ef270aa39b1aa763faeea Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Thu, 12 Nov 2020 22:56:57 +0100 Subject: remove commented out code --- mumd/src/state.rs | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) (limited to 'mumd') diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 0395b4f..2cd3931 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -450,7 +450,9 @@ impl State { warn!("{} moved to invalid channel {}", &user.name(), channel_id); } } - + + // send notification if a user muted/unmuted + //TODO our channel only let notify_desc = match (mute, deaf) { (Some(true), Some(true)) => Some(format!("{} muted and deafend themselves", &user.name())), (Some(false), Some(false)) => Some(format!("{} unmuted and undeafend themselves", &user.name())), @@ -462,23 +464,6 @@ impl State { (Some(false), Some(true)) => Some(format!("{} unmuted and deafened themselves", &user.name())), (None, None) => None, }; - // send notification if a user muted/unmuted - //TODO our channel only - /*let notif_desc = if let Some(deaf) = deaf { - if deaf { - Some(format!("{} muted and deafend themselves", &user.name())) - } else { - Some(format!("{} unmuted and undeafend themselves", &user.name())) - } - } else if let Some(mute) = mute { - if mute { - Some(format!("{} muted themselves", &user.name())) - } else { - Some(format!("{} unmuted themselves", &user.name())) - } - } else { - None - };*/ if let Some(notify_desc) = notify_desc { notify::send(notify_desc); } -- cgit v1.2.1 From ced6501577a9c747072585172903ac0432dd0f0f Mon Sep 17 00:00:00 2001 From: Eskil Queseth Date: Fri, 13 Nov 2020 01:00:39 +0100 Subject: fix mute and deafen feature --- mumd/src/state.rs | 84 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 33 deletions(-) (limited to 'mumd') diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 2cd3931..8fe5e36 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -238,25 +238,35 @@ impl State { return now!(Err(Error::DisconnectedError)); } - let action = match toggle { - Some(state) => { - if self.server().unwrap().deafened() != state { - Some(state) - } else { - None - } - } - None => Some(!self.server().unwrap().deafened()), + let server = self.server_mut().unwrap(); + let action = match (toggle, server.muted(), server.deafened()) { + (Some(false), false, false) => None, + (Some(false), false, true) => Some((false, false)), + (Some(false), true, false) => None, + (Some(false), true, true) => Some((true, false)), + (Some(true), false, false) => Some((false, true)), + (Some(true), false, true) => None, + (Some(true), true, false) => Some((true, true)), + (Some(true), true, true) => None, + (None, false, false) => Some((false, true)), + (None, false, true) => Some((false, false)), + (None, true, false) => Some((true, true)), + (None, true, true) => Some((true, false)), }; - if let Some(action) = action { - if action { - self.server_mut().unwrap().set_muted(true); - } + if let Some((mute, deafen)) = action { let mut msg = msgs::UserState::new(); - msg.set_self_deaf(action); + if server.muted() != mute { + msg.set_self_mute(mute); + } else if !mute && !deafen && server.deafened() { + msg.set_self_mute(false); + } + if server.deafened() != deafen { + msg.set_self_deaf(deafen); + } + server.set_muted(mute); + server.set_deafened(deafen); self.packet_sender.send(msg.into()).unwrap(); - self.server_mut().unwrap().set_deafened(action); } now!(Ok(None)) @@ -266,25 +276,35 @@ impl State { return now!(Err(Error::DisconnectedError)); } - let action = match toggle { - Some(state) => { - if self.server().unwrap().muted() != state { - Some(state) - } else { - None - } - } - None => Some(!self.server().unwrap().muted()), + let server = self.server_mut().unwrap(); + let action = match (toggle, server.muted(), server.deafened()) { + (Some(false), false, false) => None, + (Some(false), false, true) => Some((false, false)), + (Some(false), true, false) => Some((false, false)), + (Some(false), true, true) => Some((false, false)), + (Some(true), false, false) => Some((true, false)), + (Some(true), false, true) => None, + (Some(true), true, false) => None, + (Some(true), true, true) => None, + (None, false, false) => Some((true, false)), + (None, false, true) => Some((false, false)), + (None, true, false) => Some((false, false)), + (None, true, true) => Some((false, false)), }; - if let Some(action) = action { - if !action { - self.server_mut().unwrap().set_deafened(false); - } + if let Some((mute, deafen)) = action { let mut msg = msgs::UserState::new(); - msg.set_self_mute(action); + if server.muted() != mute { + msg.set_self_mute(mute); + } else if !mute && !deafen && server.deafened() { + msg.set_self_mute(false); + } + if server.deafened() != deafen { + msg.set_self_deaf(deafen); + } + server.set_muted(mute); + server.set_deafened(deafen); self.packet_sender.send(msg.into()).unwrap(); - self.server_mut().unwrap().set_muted(action); } now!(Ok(None)) @@ -431,8 +451,6 @@ impl State { None }; - debug!("{:?} {:?} {:?}", mute, deaf, msg); - let diff = UserDiff::from(msg); user.apply_user_diff(&diff); let user = self.server().unwrap().users().get(&session).unwrap(); @@ -450,7 +468,7 @@ impl State { warn!("{} moved to invalid channel {}", &user.name(), channel_id); } } - + // send notification if a user muted/unmuted //TODO our channel only let notify_desc = match (mute, deaf) { -- cgit v1.2.1