mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-30 23:24:42 +00:00 
			
		
		
		
	Improve code logic
This commit is contained in:
		| @@ -8,23 +8,24 @@ use crate::api_data::res_number_unread_notifications::ResNumberUnreadNotificatio | ||||
| use crate::controllers::routes::RequestResult; | ||||
| use crate::data::error::ResultBoxError; | ||||
| use crate::data::http_request_handler::HttpRequestHandler; | ||||
| use crate::data::notification::PartialNotification; | ||||
| use crate::data::notification::{Notification, PartialNotification}; | ||||
| use crate::helpers::{conversations_helper, friends_helper, notifications_helper}; | ||||
|  | ||||
| impl HttpRequestHandler { | ||||
|     /// Get the id of a notification included in the request | ||||
|     pub fn post_notif_id(&mut self, name: &str) -> ResultBoxError<u64> { | ||||
|     pub fn post_notif_id(&mut self, name: &str) -> ResultBoxError<Notification> { | ||||
|         let notif_id = self.post_u64(name)?; | ||||
|  | ||||
|         let notif = PartialNotification::new() | ||||
|             .set_id(notif_id) | ||||
|             .set_dest_user_id(self.user_id_ref()?); | ||||
|         let notif = self.ok_or_not_found( | ||||
|             notifications_helper::get_single(notif_id), | ||||
|             "Specified notification not found!", | ||||
|         )?; | ||||
|  | ||||
|         if !notifications_helper::similar_exists(¬if)? { | ||||
|             self.not_found("Specified notification not found!".to_string())?; | ||||
|         if notif.dest_user_id != self.user_id()? { | ||||
|             self.forbidden("You are not allowed to access this notification!".to_string())?; | ||||
|         } | ||||
|  | ||||
|         Ok(notif_id) | ||||
|         Ok(notif) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -55,7 +56,7 @@ pub fn get_list_unread(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|  | ||||
| /// Mark a notification as seen | ||||
| pub fn mark_seen(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     let notif_id = r.post_notif_id("notifID")?; | ||||
|     let notif = r.post_notif_id("notifID")?; | ||||
|     let delete_similar = r.post_bool_opt("delete_similar", false); | ||||
|  | ||||
|     // Check if we are targeting a precise notification or an undetermined number of similar | ||||
| @@ -63,11 +64,9 @@ pub fn mark_seen(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     if !delete_similar { | ||||
|         notifications_helper::delete( | ||||
|             &PartialNotification::new() | ||||
|             .set_id(notif_id) | ||||
|                 .set_id(notif.id) | ||||
|         )?; | ||||
|     } | ||||
|  | ||||
|     else { | ||||
|     } else { | ||||
|         // TODO : implement me | ||||
|         unimplemented!(); | ||||
|     } | ||||
|   | ||||
| @@ -47,6 +47,13 @@ pub fn get_list_unread(user_id: &UserID) -> ResultBoxError<Vec<Notification>> { | ||||
|         .exec(db_to_notif) | ||||
| } | ||||
|  | ||||
| /// Get information about a single notification | ||||
| pub fn get_single(notif_id: u64) -> ResultBoxError<Notification> { | ||||
|     database::QueryInfo::new(NOTIFICATIONS_TABLE) | ||||
|         .cond_u64("id", notif_id) | ||||
|         .query_row(db_to_notif) | ||||
| } | ||||
|  | ||||
| /// Turn a database row into a notification object | ||||
| fn db_to_notif(row: &database::RowResult) -> ResultBoxError<Notification> { | ||||
|     Ok(Notification { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user