aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/src
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-11 06:07:37 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-11 06:07:37 +0100
commit76b148011e5c974ab20466d873f11c2c460c9351 (patch)
tree8dc9b3da249715d3ebe29c5c2e9366480d416768 /filamento/src
parente49b4e5ea59079fdf047d3d2eb63ddb895c3b0eb (diff)
downloadluz-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.rs1
-rw-r--r--filamento/src/logic/offline.rs16
-rw-r--r--filamento/src/logic/online.rs14
-rw-r--r--filamento/src/logic/process_stanza.rs15
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;