`setKnownRooms` is called to regenerate the room list, and if we don't take the sticky room out of the equation we end up with the room being duplicated. So, to make this easy, we simply remove the sticky room and handle it after the fact.
This small check just ensures that we aren't about to blindly accept that the calling code knows what it is doing. There are some unknown cases where NewRoom gets fired for rooms we already know about, so in those cases we just change it to a PossibleTagChange which is what the caller likely intended.
Many of the edge cases are unknown, though this can happen for an invite being accepted (for example). It's easier to handle it here instead of tracking down every single possibility and fixing it higher up.
When a new room is added there's a fairly good chance that the other events being dispatched will happen in the middle of (for example) the room list being re-sorted. This commit wraps the entire handleRoomUpdate() function for the underlying algorithms in a lock so that if we're unlucky enough to get an update while we're sorting (as the ImportanceAlgorithm splices out what it is sorting) we won't scream about invalid index errors.
We have to do a bit of a dance to return the sticky room to the list so we can remove it, if needed, and ensure that we generally swap the rooms out of the list.
It is possible for your read marker to be set to an event without a tile (like a
reaction). We would still render the read marker at the position of those events
in the timeline, even though there's no matching tile, which breaks a core
assumption of jump to read marker path: it assumes that if the read marker node
is present in the DOM, then there must also be an event tile with a scroll token
matching the event ID.
This fixes the situation by setting a scroll token on the read marker so it can
always be scrolled to, no matter what kind of event it might represent.
Fixesvector-im/riot-web#10975
Signed-off-by: ☕ Tim <tim@wants.coffee>
On the new rooms list, if the show less button wouldn't result in a
smaller list, don't show it.
Fixesvector-im/riot-web#14219
* 'develop' of github.com:matrix-org/matrix-react-sdk:
bandaid
make js-sdk import happy?
ts-ignore because something is made of fail
js-sdk imports suck
Iterate on the new room list resize handle
Welcome no longer needs any props
unexport things which need not exporting
Instead of passing sso and cas urls to Welcome, route via start_sso and start_cas
Move to mx_sso_hs_url and co for sso persistance to not conflict with guest creds
Fix Welcome.html URLs
improve typing
Add account and room-account data hooks
Create a StaticNotificationState for representative purposes
Add StyledRadioGroup to simplify use of StyledRadioButton and use in Appearance Tab