diff options
author | 2025-05-24 12:41:32 +0100 | |
---|---|---|
committer | 2025-05-24 12:41:32 +0100 | |
commit | 8e615ec10e59353dfc1c8a6ea4538feadeace21e (patch) | |
tree | 92fbebd72f4798f06a9a1bad4676e350f67c63d7 /filamento/src | |
parent | 7b3ed73184f375004af6db62654af0e69e7d14d3 (diff) | |
download | luz-8e615ec10e59353dfc1c8a6ea4538feadeace21e.tar.gz luz-8e615ec10e59353dfc1c8a6ea4538feadeace21e.tar.bz2 luz-8e615ec10e59353dfc1c8a6ea4538feadeace21e.zip |
feat(filamento): impl `Display` for `Subscription`
Diffstat (limited to 'filamento/src')
-rw-r--r-- | filamento/src/roster.rs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/filamento/src/roster.rs b/filamento/src/roster.rs index 284e2b8..6b61e10 100644 --- a/filamento/src/roster.rs +++ b/filamento/src/roster.rs @@ -1,4 +1,4 @@ -use std::collections::HashSet; +use std::{collections::HashSet, fmt::Display}; use jid::JID; use rusqlite::{ @@ -27,15 +27,25 @@ pub struct Contact { } #[derive(Debug, Clone, PartialEq, Eq)] +/// Contact subscription state. pub enum Subscription { + /// No subscriptions. None, + /// Pending outgoing subscription request. PendingOut, + /// Pending incoming subscription request. PendingIn, + /// Pending incoming & pending outgoing subscription requests. PendingInPendingOut, + /// Subscribed to. OnlyOut, + /// Subscription from. OnlyIn, + /// Subscribed to & pending incoming subscription request. OutPendingIn, + /// Subscription from & pending outgoing subscription request. InPendingOut, + /// Buddy (subscriptions both ways). Buddy, // TODO: perhaps don't need, just emit event to remove contact // Remove, @@ -81,6 +91,30 @@ impl FromSql for Subscription { } } +impl Display for Subscription { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Subscription::None => write!(f, "No Subscriptions"), + Subscription::PendingOut => write!(f, "Pending Outgoing Subscription Request"), + Subscription::PendingIn => write!(f, "Pending Incoming Subscription Request"), + Subscription::PendingInPendingOut => write!( + f, + "Pending Incoming & Pending Outgoing Subscription Requests" + ), + Subscription::OnlyOut => write!(f, "Subscribed To"), + Subscription::OnlyIn => write!(f, "Subscription From"), + Subscription::OutPendingIn => { + write!(f, "Subscribed To & Pending Incoming Subscription Request") + } + Subscription::InPendingOut => write!( + f, + "Subscription From & Pending Outgoing Subscription Request" + ), + Subscription::Buddy => write!(f, "Buddy (Subscriptions Both Ways)"), + } + } +} + // none // > // >> |