aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src/logic/disconnect.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-03-26 15:29:11 +0000
committerLibravatar cel 🌸 <cel@bunny.garden>2025-03-26 15:29:11 +0000
commitbf677e1f9ce07e2fa8971c15b9a082cddbb40dec (patch)
treed8a6c8bec63c774322b207af43ad573d730ee1a2 /filamento/src/logic/disconnect.rs
parent2211f324782cdc617b4b5ecd071178e372539fe4 (diff)
downloadluz-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.rs18
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;
+}