From 92492288c0400e7cc243f9969b0ff177e80bcd3e Mon Sep 17 00:00:00 2001 From: Awiteb Date: Wed, 17 Jul 2024 21:45:15 +0300 Subject: [PATCH] fix: Bug when requester already has recipient in whitelist Signed-off-by: Awiteb --- crates/oxidetalis/src/websocket/handlers/chat_request.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/oxidetalis/src/websocket/handlers/chat_request.rs b/crates/oxidetalis/src/websocket/handlers/chat_request.rs index b41580c..e9044c9 100644 --- a/crates/oxidetalis/src/websocket/handlers/chat_request.rs +++ b/crates/oxidetalis/src/websocket/handlers/chat_request.rs @@ -23,6 +23,7 @@ use oxidetalis_entities::prelude::*; use sea_orm::DatabaseConnection; use crate::database::InChatRequestsExt; +use crate::errors::ServerError; use crate::extensions::OnlineUsersExt; use crate::{ database::{OutChatRequestsExt, UserTableExt, UsersStatusExt}, @@ -56,7 +57,11 @@ pub async fn handle_chat_request( return Some(WsError::RecipientBlacklist.into()); } - try_ws!(Some db.add_to_whitelist(from_user, to_public_key).await); + // To ignore the error if the requester added the recipient to the whitelist + // table before send a request to them + if let Err(ServerError::Internal(_)) = db.add_to_whitelist(from_user, to_public_key).await { + return Some(WsError::InternalServerError.into()); + } if try_ws!(Some db.is_whitelisted(&to_user, &from_public_key).await) { return Some(WsError::AlreadyInRecipientWhitelist.into());