mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-20 16:35:17 +00:00
Unregister user when removing him
This commit is contained in:
@ -7,6 +7,7 @@ use std::collections::HashSet;
|
||||
use crate::api_data::conversation_api::ConversationAPI;
|
||||
use crate::api_data::conversation_message_api::ConversationMessageAPI;
|
||||
use crate::api_data::list_unread_conversations_api::UnreadConversationAPI;
|
||||
use crate::api_data::remove_user_from_conv_message::RemovedUserFromConversationMessage;
|
||||
use crate::api_data::res_count_unread_conversations::ResultCountUnreadConversations;
|
||||
use crate::api_data::res_create_conversation::ResCreateConversation;
|
||||
use crate::api_data::res_find_private_conversations::ResFindPrivateConversations;
|
||||
@ -508,6 +509,26 @@ pub fn handle_event(e: &events_helper::Event) -> Res {
|
||||
)?;
|
||||
}
|
||||
|
||||
Event::RemovedUserFromConversation(user_id, conv_id) => {
|
||||
// Notify users
|
||||
user_ws_controller::send_message_to_specific_connections(
|
||||
|f| f.conversations.contains(conv_id),
|
||||
|_| UserWsMessage::no_id_message("removed_user_from_conv", RemovedUserFromConversationMessage::new(user_id, *conv_id)),
|
||||
None::<fn(&_) -> _>,
|
||||
)?;
|
||||
|
||||
// Disconnected users
|
||||
user_ws_controller::foreach_connection(|f| {
|
||||
if f.user_id() == user_id && f.conversations.contains(conv_id) {
|
||||
f.clone().replace(|w| {
|
||||
w.conversations.remove(conv_id);
|
||||
});
|
||||
}
|
||||
|
||||
Ok(())
|
||||
})?;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user