element-hq / element-hq/synapse

Sliding sync: add `membership` field to rooms

Open
#17,838 1 comment 0 reactions 0 assignees View on GitHub
A-Sync T-Enhancement
Dominant language
Python
Stars
4.6k
Forks
600
Avg merge
5d 22h
Merged PRs (30d)
51

Description

**Description:**

At the moment, to check if a room is a joined, invited or knocked one we need to do something like:

Does it have `invite_state`?
1. Yes: it can be either an invited or knocked room. We need to check the membership state event for our user, if any.
1.1. There is a knocked membership event: it's a knocked room.
1.2. There is either an invite membership event: it's an invite.
1.3. No membership event, or an invalid one: assume it's an invite and there was some server error.
2. No: assume it's a joined room.

That's kind of complex, it assumes several cases when we're not sure how to proceed and doesn't detail how we should differentiate between a joined room and a room with a left, kicked or banned membership (apparently, this would be another membership event check on branch 2 above).

We've discussed in chats a couple of times adding some membership field to the rooms so it's the server that tells us which membership we have in the room instead of the client having to make the decisions: it would simplify the work for clients a lot and also make sure we have consistent results between clients.

I'm adding this issue so we keep track of this suggestion.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.