aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-05-24 12:41:32 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-05-24 12:41:32 +0100
commit8e615ec10e59353dfc1c8a6ea4538feadeace21e (patch)
tree92fbebd72f4798f06a9a1bad4676e350f67c63d7 /filamento/src
parent7b3ed73184f375004af6db62654af0e69e7d14d3 (diff)
downloadluz-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.rs36
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
// >
// >>