diff --git a/src/chatlist.rs b/src/chatlist.rs index 26ad8c0cc..17f6242f6 100644 --- a/src/chatlist.rs +++ b/src/chatlist.rs @@ -6,7 +6,7 @@ use crate::contact::*; use crate::context::*; use crate::error::Result; use crate::lot::Lot; -use crate::message::{Message, MsgId}; +use crate::message::{Message, MessageState, MsgId}; use crate::stock::StockMessage; /// An object representing a single chatlist in memory. @@ -127,13 +127,13 @@ impl Chatlist { SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id - AND hidden=0) + AND (hidden=0 OR state=?)) WHERE c.id>9 AND c.blocked=0 AND c.id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?) GROUP BY c.id ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;", - params![query_contact_id as i32], + params![MessageState::OutDraft, query_contact_id as i32], process_row, process_rows, )? @@ -148,13 +148,13 @@ impl Chatlist { SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id - AND hidden=0) + AND (hidden=0 OR state=?)) WHERE c.id>9 AND c.blocked=0 AND c.archived=1 GROUP BY c.id ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;", - params![], + params![MessageState::OutDraft], process_row, process_rows, )? @@ -172,13 +172,13 @@ impl Chatlist { SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id - AND hidden=0) + AND (hidden=0 OR state=?)) WHERE c.id>9 AND c.blocked=0 AND c.name LIKE ? GROUP BY c.id ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;", - params![str_like_cmd], + params![MessageState::OutDraft, str_like_cmd], process_row, process_rows, )? @@ -193,13 +193,13 @@ impl Chatlist { SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id - AND hidden=0) + AND (hidden=0 OR state=?)) WHERE c.id>9 AND c.blocked=0 AND c.archived=0 GROUP BY c.id ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;", - params![], + params![MessageState::OutDraft], process_row, process_rows, )?; @@ -289,7 +289,7 @@ impl Chatlist { let lastmsg_id = self.ids[index].1; let mut lastcontact = None; - let mut lastmsg = if let Ok(lastmsg) = Message::load_from_db(context, lastmsg_id) { + let lastmsg = if let Ok(lastmsg) = Message::load_from_db(context, lastmsg_id) { if lastmsg.from_id != DC_CONTACT_ID_SELF && (chat.typ == Chattype::Group || chat.typ == Chattype::VerifiedGroup) { @@ -301,16 +301,6 @@ impl Chatlist { None }; - if let Ok(draft) = get_draft(context, chat.id) { - if draft.is_some() - && (lastmsg.is_none() - || draft.as_ref().unwrap().timestamp_sort - > lastmsg.as_ref().unwrap().timestamp_sort) - { - lastmsg = draft; - } - } - if chat.id == DC_CHAT_ID_ARCHIVED_LINK { ret.text2 = None; } else if lastmsg.is_none() || lastmsg.as_ref().unwrap().from_id == DC_CONTACT_ID_UNDEFINED