Skip to content

Commit ea385fa

Browse files
committed
fix(deltachat-jsonrpc): do not fail get_chatlist_items_by_entries if the message got deleted
The message may be deleted while chatlist item is loading. In this case displaying "No messages" is better than failing. Ideally loading of the chatlist item should happen in 1 database transaction and always return some message if chat is not empty, but this requires large refactoring.
1 parent 3a976a8 commit ea385fa

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

deltachat-jsonrpc/src/api/types/chat_list.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,17 @@ pub(crate) async fn get_chat_list_item_by_id(
8888

8989
let (last_updated, message_type) = match last_msgid {
9090
Some(id) => {
91-
let last_message = deltachat::message::Message::load_from_db(ctx, id).await?;
92-
(
93-
Some(last_message.get_timestamp() * 1000),
94-
Some(last_message.get_viewtype().into()),
95-
)
91+
if let Some(last_message) =
92+
deltachat::message::Message::load_from_db_optional(ctx, id).await?
93+
{
94+
(
95+
Some(last_message.get_timestamp() * 1000),
96+
Some(last_message.get_viewtype().into()),
97+
)
98+
} else {
99+
// Message may be deleted by the time we try to load it.
100+
(None, None)
101+
}
96102
}
97103
None => (None, None),
98104
};

0 commit comments

Comments
 (0)