diff --git a/deltachat-jsonrpc/src/api/types/chat.rs b/deltachat-jsonrpc/src/api/types/chat.rs index f5a5c3bcd..277817b8f 100644 --- a/deltachat-jsonrpc/src/api/types/chat.rs +++ b/deltachat-jsonrpc/src/api/types/chat.rs @@ -1,6 +1,6 @@ use std::time::{Duration, SystemTime}; -use anyhow::{anyhow, bail, Result}; +use anyhow::{anyhow, bail, Context as _, Result}; use deltachat::chat::{self, get_chat_contacts, ChatVisibility}; use deltachat::chat::{Chat, ChatId}; use deltachat::constants::Chattype; @@ -53,7 +53,9 @@ impl FullChat { contacts.push( ContactObject::try_from_dc_contact( context, - Contact::load_from_db(context, *contact_id).await?, + Contact::load_from_db(context, *contact_id) + .await + .context("failed to load contact")?, ) .await?, ) @@ -73,7 +75,8 @@ impl FullChat { let was_seen_recently = if chat.get_type() == Chattype::Single { match contact_ids.get(0) { Some(contact) => Contact::load_from_db(context, *contact) - .await? + .await + .context("failed to load contact for was_seen_recently")? .was_seen_recently(), None => false, } diff --git a/deltachat-jsonrpc/src/api/types/chat_list.rs b/deltachat-jsonrpc/src/api/types/chat_list.rs index c98b6d932..f9fb5ae8d 100644 --- a/deltachat-jsonrpc/src/api/types/chat_list.rs +++ b/deltachat-jsonrpc/src/api/types/chat_list.rs @@ -1,4 +1,4 @@ -use anyhow::Result; +use anyhow::{Context, Result}; use deltachat::chat::{Chat, ChatId}; use deltachat::chatlist::get_last_message_for_chat; use deltachat::constants::*; @@ -64,8 +64,10 @@ pub(crate) async fn get_chat_list_item_by_id( let last_msgid = get_last_message_for_chat(ctx, chat_id).await?; - let chat = Chat::load_from_db(ctx, chat_id).await?; - let summary = Chatlist::get_summary2(ctx, chat_id, last_msgid, Some(&chat)).await?; + let chat = Chat::load_from_db(ctx, chat_id).await.context("chat")?; + let summary = Chatlist::get_summary2(ctx, chat_id, last_msgid, Some(&chat)) + .await + .context("summary")?; let summary_text1 = summary.prefix.map_or_else(String::new, |s| s.to_string()); let summary_text2 = summary.text.to_owned(); @@ -93,7 +95,8 @@ pub(crate) async fn get_chat_list_item_by_id( let contact = chat_contacts.get(0); let was_seen_recently = match contact { Some(contact) => Contact::load_from_db(ctx, *contact) - .await? + .await + .context("contact")? .was_seen_recently(), None => false, }; diff --git a/src/chatlist.rs b/src/chatlist.rs index 718918807..1f515f3a2 100644 --- a/src/chatlist.rs +++ b/src/chatlist.rs @@ -311,13 +311,17 @@ impl Chatlist { }; let (lastmsg, lastcontact) = if let Some(lastmsg_id) = lastmsg_id { - let lastmsg = Message::load_from_db(context, lastmsg_id).await?; + let lastmsg = Message::load_from_db(context, lastmsg_id) + .await + .context("loading message failed")?; if lastmsg.from_id == ContactId::SELF { (Some(lastmsg), None) } else { match chat.typ { Chattype::Group | Chattype::Broadcast | Chattype::Mailinglist => { - let lastcontact = Contact::load_from_db(context, lastmsg.from_id).await?; + let lastcontact = Contact::load_from_db(context, lastmsg.from_id) + .await + .context("loading contact failed")?; (Some(lastmsg), Some(lastcontact)) } Chattype::Single | Chattype::Undefined => (Some(lastmsg), None),