mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 01:24:04 +00:00 
			
		
		
		
	Propagate unread conversations number update
This commit is contained in:
		@@ -344,6 +344,20 @@ pub fn delete_message(r: &mut HttpRequestHandler) -> RequestResult {
 | 
				
			|||||||
/// Events handler
 | 
					/// Events handler
 | 
				
			||||||
pub fn handle_event(e: &events_helper::Event) -> Res {
 | 
					pub fn handle_event(e: &events_helper::Event) -> Res {
 | 
				
			||||||
    match e {
 | 
					    match e {
 | 
				
			||||||
 | 
					        Event::UpdatedNumberUnreadConversations(users) => {
 | 
				
			||||||
 | 
					            for user in users.iter() {
 | 
				
			||||||
 | 
					                if user_ws_controller::is_user_connected(user) {
 | 
				
			||||||
 | 
					                    user_ws_controller::send_message_to_user(
 | 
				
			||||||
 | 
					                        &UserWsMessage::no_id_message(
 | 
				
			||||||
 | 
					                            "number_unread_conversations",
 | 
				
			||||||
 | 
					                            conversations_helper::count_unread_for_user(user)?,
 | 
				
			||||||
 | 
					                        )?,
 | 
				
			||||||
 | 
					                        user,
 | 
				
			||||||
 | 
					                    )?;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Event::NewConversationMessage(msg) => {
 | 
					        Event::NewConversationMessage(msg) => {
 | 
				
			||||||
            user_ws_controller::send_message_to_specific_connections(
 | 
					            user_ws_controller::send_message_to_specific_connections(
 | 
				
			||||||
                |f| f.conversations.contains(&msg.conv_id),
 | 
					                |f| f.conversations.contains(&msg.conv_id),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -312,6 +312,15 @@ pub fn send_message(msg: &NewConversationMessage) -> ResultBoxError<()> {
 | 
				
			|||||||
        .set_u64("last_active", t)
 | 
					        .set_u64("last_active", t)
 | 
				
			||||||
        .exec()?;
 | 
					        .exec()?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Get the list of users to notify after the update
 | 
				
			||||||
 | 
					    let list_to_notify = database::QueryInfo::new(CONV_USERS_TABLE)
 | 
				
			||||||
 | 
					        .cond_u64("conv_id", msg.conv_id)
 | 
				
			||||||
 | 
					        .cond_legacy_bool("saw_last_message", true)
 | 
				
			||||||
 | 
					        .cond_legacy_bool("following", true)
 | 
				
			||||||
 | 
					        .set_custom_where("user_id != ?")
 | 
				
			||||||
 | 
					        .add_custom_where_argument_user_id(&msg.user_id)
 | 
				
			||||||
 | 
					        .exec(|r| r.get_user_id("user_id"))?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Mark all the users of the conversation as unread
 | 
					    // Mark all the users of the conversation as unread
 | 
				
			||||||
    database::UpdateInfo::new(CONV_USERS_TABLE)
 | 
					    database::UpdateInfo::new(CONV_USERS_TABLE)
 | 
				
			||||||
        .cond_u64("conv_id", msg.conv_id)
 | 
					        .cond_u64("conv_id", msg.conv_id)
 | 
				
			||||||
@@ -323,7 +332,8 @@ pub fn send_message(msg: &NewConversationMessage) -> ResultBoxError<()> {
 | 
				
			|||||||
        .set_legacy_bool("saw_last_message", false)
 | 
					        .set_legacy_bool("saw_last_message", false)
 | 
				
			||||||
        .exec()?;
 | 
					        .exec()?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO : send an event (updated_number_unread_conversations)
 | 
					    // Send an event (updated_number_unread_conversations)
 | 
				
			||||||
 | 
					    events_helper::propagate_event(&Event::UpdatedNumberUnreadConversations(&list_to_notify))?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Send an event (sent_conversation_message)
 | 
					    // Send an event (sent_conversation_message)
 | 
				
			||||||
    events_helper::propagate_event(&Event::NewConversationMessage(&get_single_message(msg_id)?))?;
 | 
					    events_helper::propagate_event(&Event::NewConversationMessage(&get_single_message(msg_id)?))?;
 | 
				
			||||||
@@ -411,7 +421,8 @@ pub fn mark_user_seen(conv_id: u64, user_id: &UserID) -> ResultBoxError<()> {
 | 
				
			|||||||
        .set_legacy_bool("saw_last_message", true)
 | 
					        .set_legacy_bool("saw_last_message", true)
 | 
				
			||||||
        .exec()?;
 | 
					        .exec()?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO : push an event (updated_number_unread_conversations)
 | 
					    // Push an event (updated_number_unread_conversations)
 | 
				
			||||||
 | 
					    events_helper::propagate_event(&Event::UpdatedNumberUnreadConversations(&vec![user_id.clone()]))?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Ok(())
 | 
					    Ok(())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,9 @@ pub enum Event<'a> {
 | 
				
			|||||||
    /// Updated the number of notifications of one of multiple users user
 | 
					    /// Updated the number of notifications of one of multiple users user
 | 
				
			||||||
    UpdatedNotificationsNumber(&'a Vec<UserID>),
 | 
					    UpdatedNotificationsNumber(&'a Vec<UserID>),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Updated the number of unread conversations
 | 
				
			||||||
 | 
					    UpdatedNumberUnreadConversations(&'a Vec<UserID>),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Created a new conversation message
 | 
					    /// Created a new conversation message
 | 
				
			||||||
    NewConversationMessage(&'a ConversationMessage),
 | 
					    NewConversationMessage(&'a ConversationMessage),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user