mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-11-26 07:19:22 +00:00
Unregister user when removing him
This commit is contained in:
parent
7ae8fb2fad
commit
0f4b7af449
@ -66,3 +66,4 @@ pub mod new_call_signal;
|
||||
pub mod call_peer_ready;
|
||||
pub mod call_peer_interrupted_streaming;
|
||||
pub mod res_check_password_token;
|
||||
pub mod remove_user_from_conv_message;
|
23
src/api_data/remove_user_from_conv_message.rs
Normal file
23
src/api_data/remove_user_from_conv_message.rs
Normal file
@ -0,0 +1,23 @@
|
||||
//! # Removed user from conversation message
|
||||
//!
|
||||
//! @author Pierre Hubert
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
use crate::data::conversation::ConvID;
|
||||
use crate::data::user::UserID;
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct RemovedUserFromConversationMessage {
|
||||
user_id: u64,
|
||||
conv_id: u64,
|
||||
}
|
||||
|
||||
impl RemovedUserFromConversationMessage {
|
||||
pub fn new(user_id: &UserID, conv_id: ConvID) -> Self {
|
||||
Self {
|
||||
user_id: user_id.id(),
|
||||
conv_id: conv_id.id(),
|
||||
}
|
||||
}
|
||||
}
|
@ -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(())
|
||||
})?;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
@ -488,6 +488,9 @@ pub fn remove_member(user_id: &UserID, conv_id: ConvID, remover: &UserID) -> Res
|
||||
))?;
|
||||
}
|
||||
|
||||
// Propagate event
|
||||
events_helper::propagate_event(&Event::RemovedUserFromConversation(user_id, conv_id))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -38,6 +38,9 @@ pub enum Event<'a> {
|
||||
/// Deleted a conversation message
|
||||
DeleteConversationMessage(&'a ConversationMessage),
|
||||
|
||||
/// Removed a user from a conversation
|
||||
RemovedUserFromConversation(&'a UserID, ConvID),
|
||||
|
||||
/// Created a new comment
|
||||
NewComment(&'a Comment),
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user