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