From 060b4c43f4407bf8f0210e3f7fea8db47ad11934 Mon Sep 17 00:00:00 2001 From: Zomatree Date: Fri, 7 Feb 2025 21:35:51 +0000 Subject: [PATCH] feat: make Channel::server return a reference --- crates/core/database/src/models/channels/model.rs | 4 ++-- crates/core/database/src/voice/mod.rs | 2 +- crates/core/database/src/voice/voice_client.rs | 2 +- crates/daemons/voice-ingress/src/main.rs | 8 ++++---- crates/delta/src/routes/channels/channel_delete.rs | 2 +- .../delta/src/routes/channels/permissions_set_default.rs | 2 +- crates/delta/src/routes/servers/member_edit.rs | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/core/database/src/models/channels/model.rs b/crates/core/database/src/models/channels/model.rs index 94dd272a..8af881ff 100644 --- a/crates/core/database/src/models/channels/model.rs +++ b/crates/core/database/src/models/channels/model.rs @@ -435,9 +435,9 @@ impl Channel { } /// Clone this channel's server id - pub fn server(&self) -> Option { + pub fn server(&self) -> Option<&str> { match self { - Channel::TextChannel { server, .. } | Channel::VoiceChannel { server, .. } => Some(server.clone()), + Channel::TextChannel { server, .. } | Channel::VoiceChannel { server, .. } => Some(server), _ => None } } diff --git a/crates/core/database/src/voice/mod.rs b/crates/core/database/src/voice/mod.rs index 996ee505..18380660 100644 --- a/crates/core/database/src/voice/mod.rs +++ b/crates/core/database/src/voice/mod.rs @@ -1,7 +1,7 @@ use livekit_protocol::ParticipantPermission; use redis_kiss::{get_connection as _get_connection, Conn, redis::Pipeline, AsyncCommands}; -use crate::{events::client::EventV1, models::{Channel, User}, util::{permissions::DatabasePermissionQuery, reference::Reference}, Database, Role, Server}; +use crate::{events::client::EventV1, models::{Channel, User}, util::{permissions::DatabasePermissionQuery, reference::Reference}, Database, Server}; use revolt_models::v0::{self, PartialUserVoiceState, UserVoiceState}; use revolt_permissions::{calculate_channel_permissions, ChannelPermission, PermissionValue}; use revolt_result::{create_error, Result, ToRevoltError}; diff --git a/crates/core/database/src/voice/voice_client.rs b/crates/core/database/src/voice/voice_client.rs index 261f68a7..a6b2ba03 100644 --- a/crates/core/database/src/voice/voice_client.rs +++ b/crates/core/database/src/voice/voice_client.rs @@ -54,7 +54,7 @@ impl VoiceClient { .with_grants(VideoGrants { room_join: true, can_publish: true, - can_publish_sources: vec![], // allowed_sources.into_iter().map(ToString::to_string).collect(), + can_publish_sources: allowed_sources.into_iter().map(ToString::to_string).collect(), can_subscribe: permissions.has_channel_permission(ChannelPermission::Listen), room: channel.id().to_string(), ..Default::default() diff --git a/crates/daemons/voice-ingress/src/main.rs b/crates/daemons/voice-ingress/src/main.rs index 55fdf755..04ec6e09 100644 --- a/crates/daemons/voice-ingress/src/main.rs +++ b/crates/daemons/voice-ingress/src/main.rs @@ -50,7 +50,7 @@ async fn ingress(db: &State, voice_client: &State, body: .as_channel(db) .await?; - let voice_state = create_voice_state(channel_id, channel.server().as_deref(), user_id).await?; + let voice_state = create_voice_state(channel_id, channel.server(), user_id).await?; EventV1::VoiceChannelJoin { id: channel_id.clone(), @@ -67,7 +67,7 @@ async fn ingress(db: &State, voice_client: &State, body: .as_channel(db) .await?; - delete_voice_state(channel_id, channel.server().as_deref(), user_id).await?; + delete_voice_state(channel_id, channel.server(), user_id).await?; EventV1::VoiceChannelLeave { id: channel_id.clone(), @@ -93,12 +93,12 @@ async fn ingress(db: &State, voice_client: &State, body: ) { voice_client.remove_user(user_id, channel_id).await?; - delete_voice_state(channel_id, channel.server().as_deref(), user_id).await?; + delete_voice_state(channel_id, channel.server(), user_id).await?; } let partial = update_voice_state_tracks( channel_id, - channel.server().as_deref(), + channel.server(), user_id, body.event == "track_published", // to avoid duplicating this entire case twice track.source diff --git a/crates/delta/src/routes/channels/channel_delete.rs b/crates/delta/src/routes/channels/channel_delete.rs index 5cefe755..f3dab86d 100644 --- a/crates/delta/src/routes/channels/channel_delete.rs +++ b/crates/delta/src/routes/channels/channel_delete.rs @@ -55,7 +55,7 @@ pub async fn delete( for user_id in get_voice_channel_members(channel.id()).await? { voice_client.remove_user(&user_id, channel.id()).await?; - delete_voice_state(channel.id(), channel.server().as_deref(), &user.id).await?; + delete_voice_state(channel.id(), channel.server(), &user.id).await?; }; Ok(EmptyResponse) diff --git a/crates/delta/src/routes/channels/permissions_set_default.rs b/crates/delta/src/routes/channels/permissions_set_default.rs index ed82de81..91f53b2f 100644 --- a/crates/delta/src/routes/channels/permissions_set_default.rs +++ b/crates/delta/src/routes/channels/permissions_set_default.rs @@ -76,7 +76,7 @@ pub async fn set_default_permissions( } let server = match channel.server() { - Some(server_id) => Some(Reference::from_unchecked(server_id).as_server(db).await?), + Some(server_id) => Some(Reference::from_unchecked(server_id.to_string()).as_server(db).await?), None => None }; diff --git a/crates/delta/src/routes/servers/member_edit.rs b/crates/delta/src/routes/servers/member_edit.rs index d86155be..16ebbd96 100644 --- a/crates/delta/src/routes/servers/member_edit.rs +++ b/crates/delta/src/routes/servers/member_edit.rs @@ -157,8 +157,8 @@ pub async fn edit( roles, timeout, remove, - mut can_publish, - mut can_receive, + can_publish, + can_receive, voice_channel, } = data;