mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 01:16:31 +03:00
sort drafts again to the top of the chatlist
this reverts the logical changes done in #811 but keeps the improvements done later eg. in #911. the reason for the revert is that it is too hard to find a started draft in a larget chatlist. also the shown date would not be just descending.
This commit is contained in:
committed by
Floris Bruynooghe
parent
17cb1226c6
commit
657b53ae0b
@@ -6,7 +6,7 @@ use crate::contact::*;
|
|||||||
use crate::context::*;
|
use crate::context::*;
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
use crate::lot::Lot;
|
use crate::lot::Lot;
|
||||||
use crate::message::{Message, MsgId};
|
use crate::message::{Message, MessageState, MsgId};
|
||||||
use crate::stock::StockMessage;
|
use crate::stock::StockMessage;
|
||||||
|
|
||||||
/// An object representing a single chatlist in memory.
|
/// An object representing a single chatlist in memory.
|
||||||
@@ -127,13 +127,13 @@ impl Chatlist {
|
|||||||
SELECT MAX(timestamp)
|
SELECT MAX(timestamp)
|
||||||
FROM msgs
|
FROM msgs
|
||||||
WHERE chat_id=c.id
|
WHERE chat_id=c.id
|
||||||
AND hidden=0)
|
AND (hidden=0 OR state=?))
|
||||||
WHERE c.id>9
|
WHERE c.id>9
|
||||||
AND c.blocked=0
|
AND c.blocked=0
|
||||||
AND c.id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?)
|
AND c.id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?)
|
||||||
GROUP BY c.id
|
GROUP BY c.id
|
||||||
ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;",
|
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_row,
|
||||||
process_rows,
|
process_rows,
|
||||||
)?
|
)?
|
||||||
@@ -148,13 +148,13 @@ impl Chatlist {
|
|||||||
SELECT MAX(timestamp)
|
SELECT MAX(timestamp)
|
||||||
FROM msgs
|
FROM msgs
|
||||||
WHERE chat_id=c.id
|
WHERE chat_id=c.id
|
||||||
AND hidden=0)
|
AND (hidden=0 OR state=?))
|
||||||
WHERE c.id>9
|
WHERE c.id>9
|
||||||
AND c.blocked=0
|
AND c.blocked=0
|
||||||
AND c.archived=1
|
AND c.archived=1
|
||||||
GROUP BY c.id
|
GROUP BY c.id
|
||||||
ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;",
|
ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;",
|
||||||
params![],
|
params![MessageState::OutDraft],
|
||||||
process_row,
|
process_row,
|
||||||
process_rows,
|
process_rows,
|
||||||
)?
|
)?
|
||||||
@@ -172,13 +172,13 @@ impl Chatlist {
|
|||||||
SELECT MAX(timestamp)
|
SELECT MAX(timestamp)
|
||||||
FROM msgs
|
FROM msgs
|
||||||
WHERE chat_id=c.id
|
WHERE chat_id=c.id
|
||||||
AND hidden=0)
|
AND (hidden=0 OR state=?))
|
||||||
WHERE c.id>9
|
WHERE c.id>9
|
||||||
AND c.blocked=0
|
AND c.blocked=0
|
||||||
AND c.name LIKE ?
|
AND c.name LIKE ?
|
||||||
GROUP BY c.id
|
GROUP BY c.id
|
||||||
ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;",
|
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_row,
|
||||||
process_rows,
|
process_rows,
|
||||||
)?
|
)?
|
||||||
@@ -193,13 +193,13 @@ impl Chatlist {
|
|||||||
SELECT MAX(timestamp)
|
SELECT MAX(timestamp)
|
||||||
FROM msgs
|
FROM msgs
|
||||||
WHERE chat_id=c.id
|
WHERE chat_id=c.id
|
||||||
AND hidden=0)
|
AND (hidden=0 OR state=?))
|
||||||
WHERE c.id>9
|
WHERE c.id>9
|
||||||
AND c.blocked=0
|
AND c.blocked=0
|
||||||
AND c.archived=0
|
AND c.archived=0
|
||||||
GROUP BY c.id
|
GROUP BY c.id
|
||||||
ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;",
|
ORDER BY IFNULL(m.timestamp,c.created_timestamp) DESC, m.id DESC;",
|
||||||
params![],
|
params![MessageState::OutDraft],
|
||||||
process_row,
|
process_row,
|
||||||
process_rows,
|
process_rows,
|
||||||
)?;
|
)?;
|
||||||
@@ -289,7 +289,7 @@ impl Chatlist {
|
|||||||
let lastmsg_id = self.ids[index].1;
|
let lastmsg_id = self.ids[index].1;
|
||||||
let mut lastcontact = None;
|
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
|
if lastmsg.from_id != DC_CONTACT_ID_SELF
|
||||||
&& (chat.typ == Chattype::Group || chat.typ == Chattype::VerifiedGroup)
|
&& (chat.typ == Chattype::Group || chat.typ == Chattype::VerifiedGroup)
|
||||||
{
|
{
|
||||||
@@ -301,16 +301,6 @@ impl Chatlist {
|
|||||||
None
|
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 {
|
if chat.id == DC_CHAT_ID_ARCHIVED_LINK {
|
||||||
ret.text2 = None;
|
ret.text2 = None;
|
||||||
} else if lastmsg.is_none() || lastmsg.as_ref().unwrap().from_id == DC_CONTACT_ID_UNDEFINED
|
} else if lastmsg.is_none() || lastmsg.as_ref().unwrap().from_id == DC_CONTACT_ID_UNDEFINED
|
||||||
|
|||||||
Reference in New Issue
Block a user