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;
|
use crate::data::user::UserID;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub struct Conversation {
|
pub struct Conversation {
|
||||||
pub id: u64,
|
pub id: u64,
|
||||||
pub owner_id: UserID,
|
pub owner_id: UserID,
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
use crate::data::user::UserID;
|
use crate::data::user::UserID;
|
||||||
|
|
||||||
|
#[derive(PartialEq, Eq)]
|
||||||
pub struct Friend {
|
pub struct Friend {
|
||||||
pub friend_id: UserID,
|
pub friend_id: UserID,
|
||||||
pub accepted: bool,
|
pub accepted: bool,
|
||||||
|
@ -2,12 +2,37 @@
|
|||||||
//!
|
//!
|
||||||
//! @author Pierre Hubert
|
//! @author Pierre Hubert
|
||||||
|
|
||||||
use crate::data::friend::Friend;
|
use std::cmp::Ordering;
|
||||||
|
|
||||||
use crate::data::conversation::Conversation;
|
use crate::data::conversation::Conversation;
|
||||||
|
use crate::data::friend::Friend;
|
||||||
use crate::data::group_id::GroupID;
|
use crate::data::group_id::GroupID;
|
||||||
|
|
||||||
|
#[derive(PartialEq, Eq)]
|
||||||
pub enum UserMembership {
|
pub enum UserMembership {
|
||||||
Group(GroupID, u64),
|
Group(GroupID, u64),
|
||||||
Friend(Friend),
|
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.push(UserMembership::Conversation(conv))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.sort_by(|a, b| b.cmp(a));
|
||||||
|
|
||||||
Ok(list)
|
Ok(list)
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user