diff --git a/crates/core/database/src/voice/voice_client.rs b/crates/core/database/src/voice/voice_client.rs index e6067f79..d06fe1c3 100644 --- a/crates/core/database/src/voice/voice_client.rs +++ b/crates/core/database/src/voice/voice_client.rs @@ -89,7 +89,7 @@ impl VoiceClient { let room = self.get_node(node)?; let voice = match channel { - Channel::DirectMessage { .. } => Some(Cow::Owned(v0::VoiceInformation::default())), + Channel::DirectMessage { .. } | Channel::Group { .. } => Some(Cow::Owned(v0::VoiceInformation::default())), Channel::TextChannel { voice: Some(voice), .. } => Some(Cow::Borrowed(voice)), _ => None } @@ -99,7 +99,7 @@ impl VoiceClient { .create_room( channel.id(), CreateRoomOptions { - max_participants: voice.max_users.unwrap_or(u32::MAX), + max_participants: voice.max_users.unwrap_or(0), empty_timeout: 5 * 60, // 5 minutes, ..Default::default() }, diff --git a/crates/daemons/voice-ingress/src/main.rs b/crates/daemons/voice-ingress/src/main.rs index 9602fa1c..395c6ba7 100644 --- a/crates/daemons/voice-ingress/src/main.rs +++ b/crates/daemons/voice-ingress/src/main.rs @@ -63,7 +63,8 @@ async fn ingress(db: &State, node: &str, voice_client: &State channel - .remove_user_from_group( - db, - amqp, - &user, - None, - options.leave_silently.unwrap_or_default(), - ) - .await?, + Channel::Group { .. } => { + channel + .remove_user_from_group( + db, + amqp, + &user, + None, + options.leave_silently.unwrap_or_default(), + ) + .await?; + + if is_in_voice_channel(&user.id, channel.id()).await? { + let node = get_channel_node(channel.id()).await?.unwrap(); + + voice_client.remove_user(&node, &user.id, channel.id()).await?; + delete_voice_state(channel.id(), None, &user.id).await?; + }; + }, Channel::TextChannel { .. } | Channel::VoiceChannel { .. } => { permissions.throw_if_lacking_channel_permission(ChannelPermission::ManageChannel)?; - channel.delete(db).await? - } - }; + channel.delete(db).await?; - if let Some(users) = get_voice_channel_members(channel.id()).await? { - let node = get_channel_node(channel.id()).await?.unwrap(); + if let Some(users) = get_voice_channel_members(channel.id()).await? { + let node = get_channel_node(channel.id()).await?.unwrap(); - for user in users { - voice_client.remove_user(&node, &user, channel.id()).await?; - delete_voice_state(channel.id(), channel.server(), &user).await?; + for user in users { + voice_client.remove_user(&node, &user, channel.id()).await?; + delete_voice_state(channel.id(), channel.server(), &user).await?; + } + }; } }; diff --git a/crates/delta/src/routes/channels/group_remove_member.rs b/crates/delta/src/routes/channels/group_remove_member.rs index fc63acc1..049762eb 100644 --- a/crates/delta/src/routes/channels/group_remove_member.rs +++ b/crates/delta/src/routes/channels/group_remove_member.rs @@ -36,7 +36,7 @@ pub async fn remove_member( return Err(create_error!(CannotRemoveYourself)); } - if !recipients.iter().any(|x| *x == member.id) { + if !recipients.contains(&member.id) { return Err(create_error!(NotInGroup)); }