From 4780f89604d871e7dec1b5963421b8245f6a09b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Thu, 27 Mar 2025 00:43:13 +0100 Subject: [PATCH] xmpp: new Agent::new method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- xmpp/ChangeLog | 1 + xmpp/src/agent.rs | 21 +++++++++++++++++++++ xmpp/src/builder.rs | 16 +--------------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/xmpp/ChangeLog b/xmpp/ChangeLog index c4e35a6929ca5db80931f5b36eaa24ecf10e0ec2..4dcf3ed066f434941cd3cf7817968d01c63bf3f7 100644 --- a/xmpp/ChangeLog +++ b/xmpp/ChangeLog @@ -21,6 +21,7 @@ XXXX-YY-ZZ [ RELEASER ] - Event::ChatMessageCorrection, Event::RoomMessageCorrection, and Event::RoomPrivateMessageCorrection signal XEP-0308 message corrections; they're not checked how old the corrected entry is, which has security concerns (!496) + - Agent::new helper method. * Fixes: - Use tokio::sync::RwLock not std::sync::RwLock (!432) - Agent::wait_for_events now return Vec and sets inner tokio_xmpp Client diff --git a/xmpp/src/agent.rs b/xmpp/src/agent.rs index 5513c1bfb2bb768d0fc1ae7781f2a9b00e5f727b..a65158fb8af20bcc6a1c34f5c6552abd45a9ea78 100644 --- a/xmpp/src/agent.rs +++ b/xmpp/src/agent.rs @@ -33,6 +33,27 @@ pub struct Agent { } impl Agent { + pub fn new( + client: TokioXmppClient, + default_nick: RoomNick, + lang: Vec, + disco: DiscoInfoResult, + node: String, + ) -> Agent { + Agent { + client, + default_nick: Arc::new(RwLock::new(default_nick)), + lang: Arc::new(lang), + disco, + node, + uploads: Vec::new(), + awaiting_disco_bookmarks_type: false, + rooms_joined: HashMap::new(), + rooms_joining: HashMap::new(), + rooms_leaving: HashMap::new(), + } + } + pub async fn disconnect(self) -> Result<(), Error> { self.client.send_end().await } diff --git a/xmpp/src/builder.rs b/xmpp/src/builder.rs index 5b78b85b4df28418b6a7d59e7e38befde9b88d99..ace98e47489ad4a4e6bfdfaab635f4aadf256946 100644 --- a/xmpp/src/builder.rs +++ b/xmpp/src/builder.rs @@ -6,10 +6,7 @@ #[cfg(any(feature = "starttls-rust", feature = "starttls-native"))] use crate::tokio_xmpp::connect::{DnsConfig, StartTlsServerConnector}; -use alloc::sync::Arc; use core::str::FromStr; -use std::collections::HashMap; -use tokio::sync::RwLock; use crate::{ jid::{BareJid, Jid, ResourceRef}, @@ -172,17 +169,6 @@ impl ClientBuilder<'_, C> { let disco = self.make_disco(); let node = self.website; - Agent { - client, - default_nick: Arc::new(RwLock::new(self.default_nick)), - lang: Arc::new(self.lang), - disco, - node, - uploads: Vec::new(), - awaiting_disco_bookmarks_type: false, - rooms_joined: HashMap::new(), - rooms_joining: HashMap::new(), - rooms_leaving: HashMap::new(), - } + Agent::new(client, self.default_nick, self.lang, disco, node) } }