order contact lists by "last seen" instead of name/address (#3562)

order all contact lists by last_seen instead of name or address
This commit is contained in:
bjoern
2022-08-29 13:55:00 +02:00
committed by GitHub
parent 5663b1c539
commit b2b22c8b85
3 changed files with 8 additions and 6 deletions

View File

@@ -13,6 +13,8 @@
- add `dc_contact_was_seen_recently()` #3560
### Changes
- order contact lists by "last seen";
this affects `dc_get_chat_contacts()`, `dc_get_contacts()` and `dc_get_blocked_contacts()` #3562
### Fixes
- do not emit notifications for blocked chats #3557

View File

@@ -2525,7 +2525,7 @@ pub async fn get_chat_contacts(context: &Context, chat_id: ChatId) -> Result<Vec
LEFT JOIN contacts c
ON c.id=cc.contact_id
WHERE cc.chat_id=?
ORDER BY c.id=1, LOWER(c.name||c.addr), c.id;",
ORDER BY c.id=1, c.last_seen DESC, c.id DESC;",
paramsv![chat_id],
|row| row.get::<_, ContactId>(0),
|ids| ids.collect::<Result<Vec<_>, _>>().map_err(Into::into),
@@ -5456,8 +5456,8 @@ mod tests {
assert_eq!(
chat_id.get_encryption_info(&alice).await?,
"No encryption:\n\
bob@example.net\n\
fiona@example.net"
fiona@example.net\n\
bob@example.net"
);
let direct_chat = bob.create_chat(&alice).await;

View File

@@ -716,7 +716,7 @@ impl Contact {
AND c.blocked=0 \
AND (iif(c.name='',c.authname,c.name) LIKE ? OR c.addr LIKE ?) \
AND (1=? OR LENGTH(ps.verified_key_fingerprint)!=0) \
ORDER BY LOWER(iif(c.name='',c.authname,c.name)||c.addr),c.id;",
ORDER BY c.last_seen DESC, c.id DESC;",
sql::repeat_vars(self_addrs.len())
),
rusqlite::params_from_iter(params_iter(&self_addrs).chain(params_iterv![
@@ -768,7 +768,7 @@ impl Contact {
AND id>?
AND origin>=?
AND blocked=0
ORDER BY LOWER(iif(name='',authname,name)||addr),id;",
ORDER BY last_seen DESC, id DESC;",
sql::repeat_vars(self_addrs.len())
),
rusqlite::params_from_iter(params_iter(&self_addrs).chain(params_iterv![
@@ -857,7 +857,7 @@ impl Contact {
let list = context
.sql
.query_map(
"SELECT id FROM contacts WHERE id>? AND blocked!=0 ORDER BY LOWER(iif(name='',authname,name)||addr),id;",
"SELECT id FROM contacts WHERE id>? AND blocked!=0 ORDER BY last_seen DESC, id DESC;",
paramsv![ContactId::LAST_SPECIAL],
|row| row.get::<_, ContactId>(0),
|ids| {