diff options
author | 2025-03-26 15:29:11 +0000 | |
---|---|---|
committer | 2025-03-26 15:29:11 +0000 | |
commit | bf677e1f9ce07e2fa8971c15b9a082cddbb40dec (patch) | |
tree | d8a6c8bec63c774322b207af43ad573d730ee1a2 /filamento/src/logic/disconnect.rs | |
parent | 2211f324782cdc617b4b5ecd071178e372539fe4 (diff) | |
download | luz-bf677e1f9ce07e2fa8971c15b9a082cddbb40dec.tar.gz luz-bf677e1f9ce07e2fa8971c15b9a082cddbb40dec.tar.bz2 luz-bf677e1f9ce07e2fa8971c15b9a082cddbb40dec.zip |
refactor(filament): split logic into different files
Diffstat (limited to 'filamento/src/logic/disconnect.rs')
-rw-r--r-- | filamento/src/logic/disconnect.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/filamento/src/logic/disconnect.rs b/filamento/src/logic/disconnect.rs new file mode 100644 index 0000000..241c3e6 --- /dev/null +++ b/filamento/src/logic/disconnect.rs @@ -0,0 +1,18 @@ +use lampada::Connected; +use stanza::client::Stanza; + +use crate::{UpdateMessage, presence::Offline}; + +use super::ClientLogic; + +pub async fn handle_disconnect(logic: ClientLogic, connection: Connected) { + // TODO: be able to set offline status message + let offline_presence: stanza::client::presence::Presence = Offline::default().into_stanza(None); + let stanza = Stanza::Presence(offline_presence); + // TODO: timeout and error check + connection.write_handle().write(stanza).await; + let _ = logic + .update_sender() + .send(UpdateMessage::Offline(Offline::default())) + .await; +} |