1
0
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:
2020-07-13 11:44:37 +02:00
parent b5bcb3e8c7
commit 748fa64609
4 changed files with 31 additions and 3 deletions

View File

@ -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,

View File

@ -4,6 +4,7 @@
use crate::data::user::UserID;
#[derive(PartialEq, Eq)]
pub struct Friend {
pub friend_id: UserID,
pub accepted: bool,

View File

@ -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())
}
}