Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

msglist: Show when fetch-older isn't succeeding #1126

Open
chrisbobbe opened this issue Dec 10, 2024 · 2 comments
Open

msglist: Show when fetch-older isn't succeeding #1126

chrisbobbe opened this issue Dec 10, 2024 · 2 comments
Labels
a-msglist The message-list screen, except what's label:a-content
Milestone

Comments

@chrisbobbe
Copy link
Collaborator

(Filing this issue from my thought at #1050 (review) .)

When the user scrolls to the earliest messages in a message list, we take that as a cue to fetch earlier messages if any. This issue is to tell the user when those fetches are failing so they can act on it, e.g. by not waiting longer or by debugging their network.

#945 is related, and we expect PR #1050 for that soon. Let's finish that before picking up this issue.

A toast or dialog won't be correct here because it would be too spammy. Even when throttled by a BackoffMachine (as in #1050), retries may be done multiple times per second.

How about a stateful marker (an ⚠ sign or similar) at the place where the user expects the fetched messages to appear. Like how we show the fetch's progress feedback:

image

One approach post-#1050 is to show the marker just during the cooldown period between retries. Let's not do that, for a few reasons:

  • When the requests take a short time before failing, this makes it more likely for the marker to flip on and off quickly, making the app seem glitchy. ("Is there a problem or not??")
  • When the requests take a long time before failing—could be 30s or more—the marker could be extremely easy to miss. The cooldown period could be only milliseconds, maybe even too short for a frame.

I propose showing the marker from the start of the first retry (i.e. the second request for the same batch of messages, after the first one failed) until a retry succeeds or the message list resets. If a request is in progress, of course we hope it succeeds…but if we've just made a request with the same params and it failed, we shouldn't be too optimistic. If that's the situation we're in, the marker can help set the user's expectations.

(I thought about having the marker appear with maybe the third or fourth retry. But that's actually not soon enough to be helpful, if each doomed request is taking 30s or more.)

For the implementation, assuming #1050, the condition for showing the marker could simply be _fetchOlderCooldownBackoffMachine?.waitsCompleted > 0.

I made a sketch of what the marker might look like:

image

or something, instead of just

image
@chrisbobbe chrisbobbe added the a-msglist The message-list screen, except what's label:a-content label Dec 10, 2024
@gnprice gnprice added this to the M7: Future milestone Dec 11, 2024
@Vardhan-ysh

This comment was marked as off-topic.

@chrisbobbe

This comment was marked as off-topic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a-msglist The message-list screen, except what's label:a-content
Projects
Status: No status
Development

No branches or pull requests

3 participants