diff options
author | 2025-04-11 06:07:37 +0100 | |
---|---|---|
committer | 2025-04-11 06:07:37 +0100 | |
commit | 76b148011e5c974ab20466d873f11c2c460c9351 (patch) | |
tree | 8dc9b3da249715d3ebe29c5c2e9366480d416768 /filamento/src | |
parent | e49b4e5ea59079fdf047d3d2eb63ddb895c3b0eb (diff) | |
download | luz-76b148011e5c974ab20466d873f11c2c460c9351.tar.gz luz-76b148011e5c974ab20466d873f11c2c460c9351.tar.bz2 luz-76b148011e5c974ab20466d873f11c2c460c9351.zip |
feat(filamento): return from: `User` with `Message` on new message
Diffstat (limited to '')
-rw-r--r-- | filamento/src/lib.rs | 1 | ||||
-rw-r--r-- | filamento/src/logic/offline.rs | 16 | ||||
-rw-r--r-- | filamento/src/logic/online.rs | 14 | ||||
-rw-r--r-- | filamento/src/logic/process_stanza.rs | 15 |
4 files changed, 46 insertions, 0 deletions
diff --git a/filamento/src/lib.rs b/filamento/src/lib.rs index 974901c..2764ef1 100644 --- a/filamento/src/lib.rs +++ b/filamento/src/lib.rs @@ -166,6 +166,7 @@ pub enum UpdateMessage { // MessageDispatched(Uuid), Message { to: JID, + from: User, message: Message, }, MessageDelivery { diff --git a/filamento/src/logic/offline.rs b/filamento/src/logic/offline.rs index 82b3298..4f5df36 100644 --- a/filamento/src/logic/offline.rs +++ b/filamento/src/logic/offline.rs @@ -2,6 +2,7 @@ use std::process::id; use chrono::Utc; use lampada::error::WriteError; +use tracing::error; use uuid::Uuid; use crate::{ @@ -162,11 +163,26 @@ pub async fn handle_offline_result<Fs: FileStore + Clone>( .handle_error(MessageSendError::MessageHistory(e.into()).into()) .await; } + + let from = match logic.db().read_user(logic.bare_jid.clone()).await { + Ok(u) => u, + Err(e) => { + error!("{}", e); + User { + jid: logic.bare_jid.clone(), + nick: None, + avatar: None, + cached_status_message: None, + } + } + }; + logic .update_sender() .send(crate::UpdateMessage::Message { to: jid.as_bare(), message, + from, }) .await; } diff --git a/filamento/src/logic/online.rs b/filamento/src/logic/online.rs index d5242e0..9e90676 100644 --- a/filamento/src/logic/online.rs +++ b/filamento/src/logic/online.rs @@ -482,12 +482,26 @@ pub async fn handle_send_message<Fs: FileStore + Clone>(logic: &ClientLogic<Fs>, .await; } + let from = match logic.db().read_user(logic.bare_jid.clone()).await { + Ok(u) => u, + Err(e) => { + error!("{}", e); + User { + jid: logic.bare_jid.clone(), + nick: None, + avatar: None, + cached_status_message: None, + } + }, + }; + // tell the client a message is being sent logic .update_sender() .send(UpdateMessage::Message { to: jid.as_bare(), message, + from, }) .await; diff --git a/filamento/src/logic/process_stanza.rs b/filamento/src/logic/process_stanza.rs index 51e20a4..1a29f70 100644 --- a/filamento/src/logic/process_stanza.rs +++ b/filamento/src/logic/process_stanza.rs @@ -26,6 +26,7 @@ use crate::{ files::FileStore, presence::{Offline, Online, Presence, PresenceType, Show}, roster::Contact, + user::User, }; use super::ClientLogic; @@ -103,11 +104,25 @@ pub async fn recv_message<Fs: FileStore + Clone>( } }; + let from_user = match logic.db().read_user(from.as_bare()).await { + Ok(u) => u, + Err(e) => { + error!("{}", e); + User { + jid: from.as_bare(), + nick: None, + avatar: None, + cached_status_message: None, + } + } + }; + // update the client with the new message logic .update_sender() .send(UpdateMessage::Message { to: from.as_bare(), + from: from_user, message, }) .await; |