mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 01:24:04 +00:00 
			
		
		
		
	Notify about notifications number update
This commit is contained in:
		@@ -4,12 +4,15 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
use crate::data::error::Res;
 | 
			
		||||
use crate::data::conversation_message::ConversationMessage;
 | 
			
		||||
use crate::controllers::{conversations_controller, comments_controller};
 | 
			
		||||
use crate::controllers::{comments_controller, conversations_controller, notifications_controller};
 | 
			
		||||
use crate::data::comment::Comment;
 | 
			
		||||
use crate::data::conversation_message::ConversationMessage;
 | 
			
		||||
use crate::data::error::Res;
 | 
			
		||||
use crate::data::user::UserID;
 | 
			
		||||
 | 
			
		||||
pub enum Event<'a> {
 | 
			
		||||
    /// Updated the number of notifications of one of multiple users user
 | 
			
		||||
    UpdatedNotificationsNumber(&'a Vec<UserID>),
 | 
			
		||||
 | 
			
		||||
    /// Created a new conversation message
 | 
			
		||||
    NewConversationMessage(&'a ConversationMessage),
 | 
			
		||||
@@ -37,5 +40,6 @@ pub enum Event<'a> {
 | 
			
		||||
pub fn propagate_event(e: &Event) -> Res {
 | 
			
		||||
    conversations_controller::handle_event(e)?;
 | 
			
		||||
    comments_controller::handle_event(e)?;
 | 
			
		||||
    notifications_controller::handle_event(e)?;
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
@@ -5,12 +5,13 @@
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
use crate::constants::database_tables_names::NOTIFICATIONS_TABLE;
 | 
			
		||||
use crate::data::error::ResultBoxError;
 | 
			
		||||
use crate::data::error::{ExecError, ResultBoxError};
 | 
			
		||||
use crate::data::group_id::GroupID;
 | 
			
		||||
use crate::data::notification::{NotifElemType, NotifEventType, NotifEventVisibility, Notification, PartialNotification};
 | 
			
		||||
use crate::data::post::{PostID, PostPageKind, PostVisibilityLevel};
 | 
			
		||||
use crate::data::user::UserID;
 | 
			
		||||
use crate::helpers::{database, groups_helper, posts_helper};
 | 
			
		||||
use crate::helpers::{database, events_helper, groups_helper, posts_helper};
 | 
			
		||||
use crate::helpers::events_helper::Event;
 | 
			
		||||
use crate::helpers::friends_helper::GetFriendsQuery;
 | 
			
		||||
use crate::utils::date_utils;
 | 
			
		||||
 | 
			
		||||
@@ -218,11 +219,17 @@ fn push_private(n: &mut PartialNotification) -> ResultBoxError {
 | 
			
		||||
 | 
			
		||||
/// Create a new notification
 | 
			
		||||
fn create(n: &PartialNotification) -> ResultBoxError {
 | 
			
		||||
    if n.dest_user_id.is_none() || n.from_user_id.is_none()
 | 
			
		||||
    {
 | 
			
		||||
        return Err(ExecError::boxed_new("Trying to send a notification without a source or a destination!"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    database::InsertQuery::new(NOTIFICATIONS_TABLE)
 | 
			
		||||
        .add_values(notif_to_db(n, true))
 | 
			
		||||
        .insert_drop_result()?;
 | 
			
		||||
 | 
			
		||||
    // TODO : Send a notification (updated_number_conversations)
 | 
			
		||||
    // Send a notification (updated_number_conversations)
 | 
			
		||||
    events_helper::propagate_event(&Event::UpdatedNotificationsNumber(&vec![n.dest_user_id.clone().unwrap()]))?;
 | 
			
		||||
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
@@ -232,12 +239,19 @@ fn create(n: &PartialNotification) -> ResultBoxError {
 | 
			
		||||
pub fn delete(notification: &PartialNotification) -> ResultBoxError {
 | 
			
		||||
    let conditions = notif_to_db(notification, false);
 | 
			
		||||
 | 
			
		||||
    // Get the list of affected users
 | 
			
		||||
    let users = database::QueryInfo::new(NOTIFICATIONS_TABLE)
 | 
			
		||||
        .add_conditions(&conditions)
 | 
			
		||||
        .add_field("dest_user_id")
 | 
			
		||||
        .exec(|r| r.get_user_id("dest_user_id"))?;
 | 
			
		||||
 | 
			
		||||
    // Delete the notifications
 | 
			
		||||
    database::DeleteQuery::new(NOTIFICATIONS_TABLE)
 | 
			
		||||
        .add_conditions(conditions)
 | 
			
		||||
        .exec()?;
 | 
			
		||||
 | 
			
		||||
    // TODO : Send a notification (updated_number_conversations)
 | 
			
		||||
    // Send a notification (updated_number_conversations)
 | 
			
		||||
    events_helper::propagate_event(&Event::UpdatedNotificationsNumber(&users))?;
 | 
			
		||||
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user