feat: Chat request implementation #14

Manually merged
awiteb merged 55 commits from awiteb/chat-request-and-response into master 2024-07-18 14:21:39 +02:00 AGit
Showing only changes of commit 92492288c0 - Show all commits

View file

@ -23,6 +23,7 @@ use oxidetalis_entities::prelude::*;
use sea_orm::DatabaseConnection; use sea_orm::DatabaseConnection;
use crate::database::InChatRequestsExt; use crate::database::InChatRequestsExt;
use crate::errors::ServerError;
use crate::extensions::OnlineUsersExt; use crate::extensions::OnlineUsersExt;
use crate::{ use crate::{
database::{OutChatRequestsExt, UserTableExt, UsersStatusExt}, database::{OutChatRequestsExt, UserTableExt, UsersStatusExt},
@ -56,7 +57,11 @@ pub async fn handle_chat_request(
return Some(WsError::RecipientBlacklist.into()); 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) { if try_ws!(Some db.is_whitelisted(&to_user, &from_public_key).await) {
return Some(WsError::AlreadyInRecipientWhitelist.into()); return Some(WsError::AlreadyInRecipientWhitelist.into());