mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2024-12-28 14:38:52 +00:00
Sort the list of memberships
This commit is contained in:
parent
b5bcb3e8c7
commit
748fa64609
@ -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)
|
||||
}
|
Loading…
Reference in New Issue
Block a user