signalapp / Signal-Android

A private messenger for Android.
https://signal.org
GNU Affero General Public License v3.0
25.64k stars 6.16k forks source link

Disappearing messages and manual deletion, interfere with conversation-list sort order #8662

Closed five-c-d closed 5 years ago

five-c-d commented 5 years ago

Later edit: turns out I was wrong, the behavior described below is ByDesign, per comment by Greyson below. https://community.signalusers.org/t/improve-conversation-ordering-disappearing-messages/5235 is the feature-request thread, if somebody wants to discuss, and if you want to encourage implementation please "+1" aka thumbsUp this github-post, rather than commenting in your own post-which-says-meToo, since that emails ~700 repo-watchers. Not sure editing my comment will avoid emailing repo-watchers, but with luck it will not :-)


Bug description

When she enables disappearing-messages for her chat or groupchat with Bob, on the conversation-list Alice expects to see Bob near the top, when they have recently conversed. However, after the disappearing-messages timer has expired, the conversation-list entry for the chat/groupchat in question Alice was recently having with Bob, will plummet downward in the sort-order. Even if it was the most-recently-active-conversation for Alice, it will often no longer be at the top of her conversation-list.

If Alice has enough contacts with disappearing-messages enabled, this behavior makes the conversation-list sorting-order (MRU to LRU plus archive-folder) almost useless. Even if she only has just one conversation configured with a short disappearing-messages timer, though, that conversation will regularly be buried somewhere down the conversation-list sort-order.

Note: this github-issue is not related to message-ordering in the chat-history, which is a different bug, it is related to conversation-ordering in the conversation-list. Existing discussions: this one from Dec.2018 signal4android, and another one from Feb.2019 signal4ios.

Steps to reproduce

Actual result: Conversion-list assumes that the MRU-ness of each item, can be determined from the timestamps in the chat-bubbles therein, which have not yet been deleted (either via disappearing-messages timer or manually). Conversations with disappearing-messages enabled, pop to the top when a recent message arrives... then after the message is read, a few minutes later when the timer expires, the conversation in question plummets down the conversation-list to an indeterminate location.

Expected result: Conversation-list show which conversation-list items were MRU, using a separately-maintained lastmod timestamp. When a conversation receives a new message, it will pop to the top of the conversation-list. Even after individual chat-bubbles have disappeared within the chat-history, the associate conversation-list item will hold a stable position at the appropriate location of the conversation-list sort-order, based on when the conversation was actually last active (sent or received a message), and will display a lastmod timestamp which corresponds to the most recent such event.

Screenshots

Some signal4ios screenshots are shown here, signal4android was similar result. Let me know if you cannot reproduce the behavior, and I can upload some android-screenshots plus android-debuglogs.

Device info

Device: Alcatel A574BL Android version: 7.1.1 Signal version: 4.34.8

Link to debug log

Captured some debuglogs as part of signal4ios troubleshooting, which has the same basic issue with lastmod-timestamps: conversation-list items periodically re-order themselves when the most recent message hits the disappearing-message timer... at which point the conversation-list item in question drops downwards in the MostRecentlyUsed ordering to a quasi-randomized location in the past. https://github.com/signalapp/Signal-iOS/issues/4143#issuecomment-468656342

greyson-signal commented 5 years ago

This is expected behavior. Conversations are sorted by the most recent message, and if the message disappeared, that factors into the calculation. There's multiple use cases for disappearing messages, and one of them is that some people don't want it looking like they talked to person A recently, so the current behavior is desirable for them. This is something I think would be better discussed on the forum. Thanks!