mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-06-20 16:35:17 +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())
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user