From 561dc2d6b6bc729ddd936ff7fe175c91b175e8b2 Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Thu, 3 Jul 2025 14:11:46 +0100 Subject: feat(stanza): xep-0334 message processing hints --- stanza/src/client/message.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'stanza/src/client') diff --git a/stanza/src/client/message.rs b/stanza/src/client/message.rs index 66db921..3a7be9a 100644 --- a/stanza/src/client/message.rs +++ b/stanza/src/client/message.rs @@ -15,6 +15,8 @@ use crate::xep_0203::Delay; use crate::xep_0280::{Private, Received, Sent}; #[cfg(feature = "xep_0297")] use crate::xep_0297::Forwarded; +#[cfg(feature = "xep_0334")] +use crate::xep_0334::{NoCopy, NoPermanentStore, NoStore, Store}; use super::XMLNS; @@ -46,6 +48,14 @@ pub struct Message { pub received: Option, #[cfg(feature = "xep_0280")] pub private: Option, + #[cfg(feature = "xep_0334")] + pub no_permanent_store: Option, + #[cfg(feature = "xep_0334")] + pub no_store: Option, + #[cfg(feature = "xep_0334")] + pub no_copy: Option, + #[cfg(feature = "xep_0334")] + pub store: Option, } impl FromElement for Message { @@ -87,6 +97,18 @@ impl FromElement for Message { #[cfg(feature = "xep_0280")] let private = element.child_opt()?; + #[cfg(feature = "xep_0334")] + let no_permanent_store = element.child_opt()?; + + #[cfg(feature = "xep_0334")] + let no_store = element.child_opt()?; + + #[cfg(feature = "xep_0334")] + let no_copy = element.child_opt()?; + + #[cfg(feature = "xep_0334")] + let store = element.child_opt()?; + Ok(Message { from, id, @@ -112,6 +134,14 @@ impl FromElement for Message { received, #[cfg(feature = "xep_0280")] private, + #[cfg(feature = "xep_0334")] + no_permanent_store, + #[cfg(feature = "xep_0334")] + no_store, + #[cfg(feature = "xep_0334")] + no_copy, + #[cfg(feature = "xep_0334")] + store, }) } } @@ -158,6 +188,18 @@ impl IntoElement for Message { #[cfg(feature = "xep_0280")] let builder = builder.push_child_opt(self.private.clone()); + #[cfg(feature = "xep_0334")] + let builder = builder.push_child_opt(self.no_permanent_store); + + #[cfg(feature = "xep_0334")] + let builder = builder.push_child_opt(self.no_store); + + #[cfg(feature = "xep_0334")] + let builder = builder.push_child_opt(self.no_copy); + + #[cfg(feature = "xep_0334")] + let builder = builder.push_child_opt(self.store); + builder } } -- cgit