diff options
Diffstat (limited to '')
| -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 | 
3 files changed, 45 insertions, 0 deletions
| 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; | 
