xmpp: extend escape-hatch feature to the receiving part

Maxime “pep” Buquet created

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>

Change summary

xmpp/ChangeLog         | 3 ++-
xmpp/src/event.rs      | 2 ++
xmpp/src/event_loop.rs | 3 +++
3 files changed, 7 insertions(+), 1 deletion(-)

Detailed changes

xmpp/ChangeLog 🔗

@@ -39,7 +39,8 @@ XXXX-YY-ZZ [ RELEASER <admin@localhost> ]
         hibernating resources around.
       - New 'escape-hatch' feature: Allow sending tokio_xmpp::Stanza directly
         instead of having to go through xmpp-rs' API when it's lacking. This
-        is meant to stay behind a feature.
+        is meant to stay behind a feature. Also allows directly receiving
+        TokioXmppEvent.
       - Added documentation on `Event` enum.
     * Fixes:
       - Use tokio::sync::RwLock not std::sync::RwLock (!432)

xmpp/src/event.rs 🔗

@@ -112,4 +112,6 @@ pub enum Event {
     ServiceMessage(Option<MessageId>, BareJid, String, StanzaTimeInfo),
     /// A file has been uploaded over HTTP; contains the URL of the file.
     HttpUploadedFile(String),
+    #[cfg(feature = "escape-hatch")]
+    TokioXmppEvent(TokioXmppEvent),
 }

xmpp/src/event_loop.rs 🔗

@@ -17,6 +17,9 @@ pub async fn wait_for_events(agent: &mut Agent) -> Vec<Event> {
     if let Some(event) = agent.client.next().await {
         let mut events = Vec::new();
 
+        #[cfg(feature = "escape-hatch")]
+        events.push(Event::TokioXmppEvent(event.clone()));
+
         match event {
             TokioXmppEvent::Online { resumed: false, .. } => {
                 let presence =