From afd995bf42b3167010f3a420ef085d30dd5f76e5 Mon Sep 17 00:00:00 2001 From: AlvaroMS25 Date: Fri, 15 Mar 2024 12:42:54 +0100 Subject: [PATCH] move to new task --- src/api/routes/player.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/api/routes/player.rs b/src/api/routes/player.rs index 7a8fe48..81a02f7 100644 --- a/src/api/routes/player.rs +++ b/src/api/routes/player.rs @@ -9,7 +9,7 @@ use axum::response::{IntoResponse, Response}; use serde::Deserialize; use songbird::input::{AuxMetadata, Compose, Input, YoutubeDl}; use songbird::tracks::TrackHandle; -use tracing::{info, warn}; +use tracing::{error, info, warn}; use uuid::Uuid; use crate::api::extractors::player::PlayerExtractor; @@ -35,22 +35,22 @@ pub async fn update( body: Option> ) -> impl IntoResponse { info!("Incoming connection request"); - let player = session.playback.get_or_create(guild, Arc::clone(&session)).await; + tokio::spawn(async move { + let player = session.playback.get_or_create(guild, Arc::clone(&session)).await; - let info = body.map(|j| j.0.into_songbird(session.playback.user_id.0, guild)); + let info = body.map(|j| j.0.into_songbird(session.playback.user_id.0, guild)); - let mut lock = player.lock().await; - match lock.update(info).await { - Ok(_) => Response::builder() - .status(StatusCode::OK) - .body(Body::empty()) - .unwrap(), + let mut lock = player.lock().await; - Err(e) => Response::builder() - .status(StatusCode::INTERNAL_SERVER_ERROR) - .body(Body::from(format!(r#"{{"message": "{e}" }}"#))) - .unwrap() - } + if let Err(why) = lock.update(info).await { + error!("Failed to leave voice channel, error: {why}"); + } + }); + + Response::builder() + .status(StatusCode::OK) + .body(Body::empty()) + .unwrap() } pub async fn play(