fix: chat list & chat view desync, again #4628
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a follow-up to
#4501
(166ee8a).
The issue now is that
cancelPendingSetChat.current = undefined
unsets the cancel function for a different
selectChat()
call.This happens when you selectChat more than 2 times
in a quick succession. And can go like this:
As you can see, when we called
selectChat(2)
,it set cancelPendingSetChat (entry 2), but chat 1 loaded first,
and it unset cancelPendingSetChat (entry 4).
So when we called
selectChat(3)
(entry 5), it thought thatthere is nothing to cancel, so it didn't actually cancel
the loading of the previous chat 2.
Chat 2 loaded last, but its
cancelled
wasfalse
so it replaced the state.
But it should not have happened, because
selectChat(3)
was called last.
Basically, as you can see from the code,
this commit ensures that one
selectChat
cannot resetcancelPendingSetChat.current
if it belongs to a differentselectChat()
call.