From cc59b02b2d89ee1079de8e06fd037be1b9451d23 Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Sat, 27 Jul 2024 12:25:51 +0300
Subject: [PATCH] fix: Handle the websocet in `handle_socket` itself
Signed-off-by: Awiteb
---
crates/oxidetalis/src/websocket/mod.rs | 53 ++++++++++++--------------
1 file changed, 24 insertions(+), 29 deletions(-)
diff --git a/crates/oxidetalis/src/websocket/mod.rs b/crates/oxidetalis/src/websocket/mod.rs
index 9f93b2a..84b3396 100644
--- a/crates/oxidetalis/src/websocket/mod.rs
+++ b/crates/oxidetalis/src/websocket/mod.rs
@@ -148,38 +148,33 @@ async fn handle_socket(
// TODO: Send the incoming chat request to the user, while they are offline.
// This after adding last_login col to the user table
- let fut = async move {
- while let Some(Ok(msg)) = user_ws_receiver.next().await {
- match handle_ws_msg(msg, &nonce_cache, &user_shared_secret).await {
- Ok(event) => {
- if let Some(server_event) =
- handle_events(event, &db_conn, &conn_id, user.as_ref()).await
- {
- if let Err(err) = sender.unbounded_send(Ok(server_event
- .sign(&user_shared_secret)
- .as_ref()
- .into()))
- {
- log::error!("Websocket Error: {err}");
- break;
- }
- };
- }
- Err(err) => {
- if let Err(err) = sender.unbounded_send(Ok(ServerEvent::from(err)
- .sign(&user_shared_secret)
- .as_ref()
- .into()))
+ while let Some(Ok(msg)) = user_ws_receiver.next().await {
+ match handle_ws_msg(msg, &nonce_cache, &user_shared_secret).await {
+ Ok(event) => {
+ if let Some(server_event) =
+ handle_events(event, &db_conn, &conn_id, user.as_ref()).await
+ {
+ if let Err(err) = sender
+ .unbounded_send(Ok(server_event.sign(&user_shared_secret).as_ref().into()))
{
log::error!("Websocket Error: {err}");
break;
- };
- }
- };
- }
- user_disconnected(&db_conn, &conn_id, &user_public_key, user).await;
- };
- tokio_spawn(fut);
+ }
+ };
+ }
+ Err(err) => {
+ if let Err(err) = sender.unbounded_send(Ok(ServerEvent::from(err)
+ .sign(&user_shared_secret)
+ .as_ref()
+ .into()))
+ {
+ log::error!("Websocket Error: {err}");
+ break;
+ };
+ }
+ };
+ }
+ user_disconnected(&db_conn, &conn_id, &user_public_key, user).await;
}
/// Handle websocket msg