diff options
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  // >  // >> | 
