1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-01-07 03:12:36 +00:00
comunicapiv3/src/data/user_membership.rs

38 lines
922 B
Rust

//! # User membership
//!
//! @author Pierre Hubert
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),
}
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())
}
}