signalapp / Signal-Desktop

A private messenger for Windows, macOS, and Linux.
https://signal.org/download
GNU Affero General Public License v3.0
14.66k stars 2.67k forks source link

reverse the order of which messages are synced from other devices #6998

Closed nodeluna closed 2 months ago

nodeluna commented 2 months ago

Using a supported version?

Overall summary

reverse the order of which messages are synced from other devices

current behavior: older to recent, and messaging is blocked until all messages are retrieved

improvement: recent to older and allow messaging while it's retrieving, and maybe add a message to show that messages are still being retrieved if a user scrolled to see older messages

reason: people care more about recent messages, which could slow down Signal unnecessarily

Steps to reproduce

  1. chatting on one device for a while
  2. linking a new device
  3. messages can take a lot of time to load

Expected result

  1. chatting on one device for a while
  2. linking a new device
  3. messages are retrieved from recent to older to prevent slowing down Signal
  4. add "messages are being retrieved" on the chats that are still retrieving messages, maybe at the top of the chat or maybe if a user scrolled long enough to see the oldest message that was retrieved

Actual result

  1. Signal can take a lot of time to load if a chat has a lot of messages when linked on a new device

Screenshots

No response

Signal version

7.21.0

Operating system

linux

Version of Signal on your phone

No response

Link to debug log

No response

trevor-signal commented 2 months ago

@nodeluna thanks for this request, we'll note it. Generally we do not download messages when linking a new device; can you share more about what you're experiencing?

nodeluna commented 2 months ago

oh my bad, it happens when opening an already linked device after not using it for a some time, when there are a lot messages in the chat that haven't been downloaded yet. it doesn't happen when when linking a new device

ayumi-signal commented 2 months ago

Thanks for the suggestion. It's a reasonable idea and could improve UX when you're catching up. However implementation would be a bit difficult. We process things in order because messages may reference past messages (for example edits).

I imagine to do this we'd have to process every queued message and buffer them all, find the newest independent message and save it, finally go through remaining messages and save and splice them into the timeline. We'd also need to design new UX for the intermediate states. It's possible but more of a long term goal.

We like to keep GH issues for bugs, and this seems to be a feature request, so I'm going to close this issue.