Description
Originally opened as a element-web
issue (on 2022-04-22) that was incorrectly moved to #491 and then a discussion
Your use case
Why would you like to do it?
Rooms can be overwhelmed by bulk spam users joining rooms (thousands and thousands). Each one of those joins and leaves creates an event in the timeline.
Currently in rooms like this and trying to scrollback, you just get stuck on the thousands of member events that we only paginate 20 at a time. Each request is so slow and it doesn't even get me further back in actual results I want to see.
The goal of this change is to make the room scrollback usable again and be able to view the history of the room. Otherwise, when these spam incidents occur, that whole time period in the room is essentially a black hole.
What would you like to do? / How would you like to achieve it?
When we detect that the whole /messages
response is filled with m.room.member
join
, leave
, and invite
events, we can ask the user whether they want to continue scrolling back without them. If they accept, we should add a filter
to /messages
to not include them.
Here is a mockup of what the user prompt could look like: "It looks like you're paginating through a lot of member events, would you like to scrollback without them?"
Another option is to automatically start back-paginating by a much bigger value (500).
Another option is to use MSC3030 jump to date to jump past all of the messages. Behind the scenes, we could use /messages
with a filter to find the spot and then jump.
Have you considered any alternatives?
It's possible to hide all join/leave messages in the timeline with Settings -> Preferences -> Timeline section -> toggle the Show join/leave messages (invites/removes/bans unaffected) (showJoinLeaves
) setting. But this just affects the display of the event. It doesn't help with filtering them out of the /messages
pagination requests to being with to speed things up and get to the results we care about.
Additional context
- Hide member events
- Filter out member events when paginating
/messages
- Scrollback should filter member events when there is too many
- Scrollback is slow and filled with member events
- Flood of member state spam
- Filter out bulk spam member events when we detect the scrollback is full of them