fix: do not ignore Message::load_from_db errors

This commit is contained in:
link2xt
2024-04-03 22:44:14 +00:00
committed by bjoern
parent 5cef77b8e6
commit e465415039
2 changed files with 16 additions and 2 deletions

View File

@@ -459,7 +459,19 @@ impl Message {
}
/// Loads message with given ID from the database.
///
/// Returns an error if the message does not exist.
pub async fn load_from_db(context: &Context, id: MsgId) -> Result<Message> {
let message = Self::load_from_db_optional(context, id)
.await?
.context("Message {id} does not exist")?;
Ok(message)
}
/// Loads message with given ID from the database.
///
/// Returns `None` if the message does not exist.
pub async fn load_from_db_optional(context: &Context, id: MsgId) -> Result<Option<Message>> {
ensure!(
!id.is_special(),
"Can not load special message ID {} from DB",
@@ -467,7 +479,7 @@ impl Message {
);
let msg = context
.sql
.query_row(
.query_row_optional(
concat!(
"SELECT",
" m.id AS id,",

View File

@@ -348,7 +348,9 @@ impl Chat {
// The message reacted to may be deleted physically (`load_from_db()` fails) or marked as a tombstone (`is_trash()`).
// These are no errors as `Param::LastReaction*` are just weak pointers.
// Instead, just return `Ok(None)` and let the caller create another summary.
if let Ok(reaction_msg) = Message::load_from_db(context, reaction_msg_id).await {
if let Some(reaction_msg) =
Message::load_from_db_optional(context, reaction_msg_id).await?
{
if !reaction_msg.chat_id.is_trash() {
let reaction_contact_id = ContactId::new(
self.param