mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-30 23:24:42 +00:00 
			
		
		
		
	Sort the list of memberships
This commit is contained in:
		| @@ -4,7 +4,7 @@ | ||||
|  | ||||
| use crate::data::user::UserID; | ||||
|  | ||||
| #[derive(Debug)] | ||||
| #[derive(Debug, PartialEq, Eq)] | ||||
| pub struct Conversation { | ||||
|     pub id: u64, | ||||
|     pub owner_id: UserID, | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|  | ||||
| use crate::data::user::UserID; | ||||
|  | ||||
| #[derive(PartialEq, Eq)] | ||||
| pub struct Friend { | ||||
|     pub friend_id: UserID, | ||||
|     pub accepted: bool, | ||||
|   | ||||
| @@ -2,12 +2,37 @@ | ||||
| //! | ||||
| //! @author Pierre Hubert | ||||
|  | ||||
| use crate::data::friend::Friend; | ||||
| use std::cmp::Ordering; | ||||
|  | ||||
| use crate::data::conversation::Conversation; | ||||
| use crate::data::friend::Friend; | ||||
| use crate::data::group_id::GroupID; | ||||
|  | ||||
| #[derive(PartialEq, Eq)] | ||||
| pub enum UserMembership { | ||||
|     Group(GroupID, u64), | ||||
|     Friend(Friend), | ||||
|     Conversation(Conversation) | ||||
|     Conversation(Conversation), | ||||
| } | ||||
|  | ||||
| impl UserMembership { | ||||
|     pub fn last_active(&self) -> u64 { | ||||
|         match self { | ||||
|             UserMembership::Group(_, last_active) => *last_active, | ||||
|             UserMembership::Friend(f) => f.last_activity_time, | ||||
|             UserMembership::Conversation(c) => c.last_active, | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl PartialOrd for UserMembership { | ||||
|     fn partial_cmp(&self, other: &Self) -> Option<Ordering> { | ||||
|         self.last_active().partial_cmp(&other.last_active()) | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Ord for UserMembership { | ||||
|     fn cmp(&self, other: &Self) -> Ordering { | ||||
|         self.last_active().cmp(&other.last_active()) | ||||
|     } | ||||
| } | ||||
| @@ -30,5 +30,7 @@ pub fn get_user_memberships(user_id: &UserID) -> ResultBoxError<Vec<UserMembersh | ||||
|         list.push(UserMembership::Conversation(conv)) | ||||
|     } | ||||
|  | ||||
|     list.sort_by(|a, b| b.cmp(a)); | ||||
|  | ||||
|     Ok(list) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user