From 9c2cc8736c4ae3171434e8031ee52c5bd0a3927e Mon Sep 17 00:00:00 2001 From: Zomatree Date: Mon, 17 Feb 2025 02:11:32 +0000 Subject: [PATCH] fix: respond with the url when joining a voice channel --- crates/core/models/src/v0/channels.rs | 2 ++ crates/delta/src/routes/channels/voice_join.rs | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/core/models/src/v0/channels.rs b/crates/core/models/src/v0/channels.rs index e4dafbe0..efd65aeb 100644 --- a/crates/core/models/src/v0/channels.rs +++ b/crates/core/models/src/v0/channels.rs @@ -309,6 +309,8 @@ auto_derived!( pub struct CreateVoiceUserResponse { /// Token for authenticating with the voice server pub token: String, + /// Url of the livekit server to connect to + pub url: String } /// Voice state for a channel diff --git a/crates/delta/src/routes/channels/voice_join.rs b/crates/delta/src/routes/channels/voice_join.rs index 31359088..eebbdc71 100644 --- a/crates/delta/src/routes/channels/voice_join.rs +++ b/crates/delta/src/routes/channels/voice_join.rs @@ -1,3 +1,4 @@ +use revolt_config::config; use revolt_models::v0; use revolt_database::{util::{permissions::perms, reference::Reference}, voice::{raise_if_in_voice, VoiceClient}, Channel, Database, SystemMessage, User, AMQP}; use revolt_permissions::{calculate_channel_permissions, ChannelPermission}; @@ -11,9 +12,10 @@ use rocket::{serde::json::Json, State}; #[openapi(tag = "Voice")] #[post("//join_call", data="")] pub async fn call(db: &State, amqp: &State, voice: &State, user: User, target: Reference, data: Json) -> Result> { - if !voice.rooms.contains_key(&data.node) { - return Err(create_error!(UnknownNode)) - } + let config = config().await; + + let node_host = config.hosts.livekit.get(&data.node) + .ok_or_else(|| create_error!(UnknownNode))?; let channel = target.as_channel(db).await?; @@ -50,5 +52,5 @@ pub async fn call(db: &State, amqp: &State, voice: &State {} }; - Ok(Json(v0::CreateVoiceUserResponse { token })) + Ok(Json(v0::CreateVoiceUserResponse { token, url: node_host.clone() })) }