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());