diff options
Diffstat (limited to '')
| -rw-r--r-- | filamento/src/logic/local_only.rs | 7 | ||||
| -rw-r--r-- | filamento/src/logic/offline.rs | 8 | ||||
| -rw-r--r-- | filamento/src/logic/online.rs | 8 | ||||
| -rw-r--r-- | filamento/src/logic/process_stanza.rs | 10 | 
4 files changed, 23 insertions, 10 deletions
| diff --git a/filamento/src/logic/local_only.rs b/filamento/src/logic/local_only.rs index dc94d2c..a22efbd 100644 --- a/filamento/src/logic/local_only.rs +++ b/filamento/src/logic/local_only.rs @@ -44,6 +44,13 @@ pub async fn handle_get_chat<Fs: FileStore + Clone>(      Ok(logic.db().read_chat(jid).await?)  } +pub async fn handle_get_message<Fs: FileStore + Clone>( +    logic: &ClientLogic<Fs>, +    id: Uuid, +) -> Result<Message, DatabaseError> { +    Ok(logic.db().read_message(id).await?) +} +  pub async fn handle_get_messages<Fs: FileStore + Clone>(      logic: &ClientLogic<Fs>,      jid: JID, diff --git a/filamento/src/logic/offline.rs b/filamento/src/logic/offline.rs index 55e3d4a..42a38ca 100644 --- a/filamento/src/logic/offline.rs +++ b/filamento/src/logic/offline.rs @@ -23,8 +23,8 @@ use super::{      local_only::{          handle_delete_chat, handle_delete_messaage, handle_get_chat, handle_get_chats,          handle_get_chats_ordered, handle_get_chats_ordered_with_latest_messages, -        handle_get_chats_ordered_with_latest_messages_and_users, handle_get_messages, -        handle_get_messages_with_users, handle_get_user, +        handle_get_chats_ordered_with_latest_messages_and_users, handle_get_message, +        handle_get_messages, handle_get_messages_with_users, handle_get_user,      },  }; @@ -89,6 +89,10 @@ pub async fn handle_offline_result<Fs: FileStore + Clone>(              let chats = handle_get_chat(logic, jid).await;              sender.send(chats);          } +        Command::GetMessage(id, sender) => { +            let message = handle_get_message(logic, id).await; +            let _ = sender.send(message); +        }          Command::GetMessages(jid, sender) => {              let messages = handle_get_messages(logic, jid).await;              sender.send(messages); diff --git a/filamento/src/logic/online.rs b/filamento/src/logic/online.rs index c0c3a7f..3936584 100644 --- a/filamento/src/logic/online.rs +++ b/filamento/src/logic/online.rs @@ -23,6 +23,7 @@ use crate::{  use super::{      local_only::{ +        handle_get_message,          handle_delete_chat, handle_delete_messaage, handle_get_chat, handle_get_chats, handle_get_chats_ordered, handle_get_chats_ordered_with_latest_messages, handle_get_chats_ordered_with_latest_messages_and_users, handle_get_messages, handle_get_messages_with_users, handle_get_user      }, ClientLogic  }; @@ -583,6 +584,9 @@ pub async fn handle_send_message<Fs: FileStore + Clone>(logic: &ClientLogic<Fs>,      match result {          Ok(_) => {              info!("sent message: {:?}", message_stanza); +            if let Err(e) = logic.db().update_message_delivery(id, Delivery::Written).await { +                error!("updating message delivery: {}", e); +            }              logic                  .update_sender()                  .send(UpdateMessage::MessageDelivery { @@ -1107,6 +1111,10 @@ pub async fn handle_online_result<Fs: FileStore + Clone>(              let chat = handle_get_chat(logic, jid).await;              let _ = sender.send(chat);          } +        Command::GetMessage(id, sender) => { +            let message = handle_get_message(logic, id).await; +            let _ = sender.send(message); +        }          Command::GetMessages(jid, sender) => {              let messages = handle_get_messages(logic, jid).await;              let _ = sender.send(messages); diff --git a/filamento/src/logic/process_stanza.rs b/filamento/src/logic/process_stanza.rs index cdaff97..a5d40b2 100644 --- a/filamento/src/logic/process_stanza.rs +++ b/filamento/src/logic/process_stanza.rs @@ -90,17 +90,11 @@ pub async fn recv_message<Fs: FileStore + Clone>(                          )                          .await                      { -                        logic -                            .handle_error(Error::MessageRecv(MessageRecvError::MessageHistory(e))) -                            .await; -                        error!("failed to upsert chat and user") +                        error!("failed to create message: {}", e);                      }                  }                  Err(e) => { -                    logic -                        .handle_error(Error::MessageRecv(MessageRecvError::MessageHistory(e))) -                        .await; -                    error!("failed to upsert chat and user") +                    error!("failed to upsert chat and user: {}", e);                  }              }; | 
