Skip to content

New Room List: Prevent old tombstoned rooms from appearing in the list #29881

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

Merged
merged 6 commits into from
May 6, 2025

Conversation

MidhunSureshR
Copy link
Member

@MidhunSureshR MidhunSureshR commented May 6, 2025

When somebody changes their display name, m.room.member state event and read receipts are sent to all rooms including tombstoned or upgraded rooms. Previously, the RLS would add the room associated with such events into the skiplist regardless of whether they should be shown in the list or not. This would sometime cause old upgraded rooms to show in the list.

This PR prevents such rooms from being added into the skip list:

  • Remove the old addRoom method.
  • Introduces reInsertRoom method which will only insert the room if the room is already in the skiplist. This is the method that will be used most frequently.
  • Introduces addNewRoom method that adds new rooms that are not in the skiplist. This method will throw an error if the room is already in the skiplist.

Basically when someone changes their name, any old tombstoned rooms that
were previously hidden would suddenly show up in the list.
- `reInsertRoom` that re-inserts a room that is already known by the skiplist.
- `addNewRoom` to add new rooms

The idea is that sometimes you only want to re-insert to noop, eg: when
you get an event in an old room that was upgraded.
Only use `addNewRoom` when absolutely necessary. Most events should
instead use `reInsertRoom` which will noop when the room isn't already
known by the skiplist.
@MidhunSureshR MidhunSureshR added this pull request to the merge queue May 6, 2025
Merged via the queue into develop with commit 6ba21da May 6, 2025
44 checks passed
@MidhunSureshR MidhunSureshR deleted the midhun/rls/fix-old-rooms-in-list branch May 6, 2025 16:12
parsatorb pushed a commit to iluvatar-tech/element-web that referenced this pull request May 6, 2025
element-hq#29881)

* Write failing playwright test

Basically when someone changes their name, any old tombstoned rooms that
were previously hidden would suddenly show up in the list.

* Split addRoom into two methods

- `reInsertRoom` that re-inserts a room that is already known by the skiplist.
- `addNewRoom` to add new rooms

The idea is that sometimes you only want to re-insert to noop, eg: when
you get an event in an old room that was upgraded.

* Use new methods in the RLS

Only use `addNewRoom` when absolutely necessary. Most events should
instead use `reInsertRoom` which will noop when the room isn't already
known by the skiplist.

* Fix broken tests

* Add new test

* Fix playwright test
snowping pushed a commit to Novaloop-AG/element-web that referenced this pull request Jun 22, 2025
element-hq#29881)

* Write failing playwright test

Basically when someone changes their name, any old tombstoned rooms that
were previously hidden would suddenly show up in the list.

* Split addRoom into two methods

- `reInsertRoom` that re-inserts a room that is already known by the skiplist.
- `addNewRoom` to add new rooms

The idea is that sometimes you only want to re-insert to noop, eg: when
you get an event in an old room that was upgraded.

* Use new methods in the RLS

Only use `addNewRoom` when absolutely necessary. Most events should
instead use `reInsertRoom` which will noop when the room isn't already
known by the skiplist.

* Fix broken tests

* Add new test

* Fix playwright test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants