matrix-org / matrix-org/matrix-spec

Invite cancellation is indistinct from kick/leave (SPEC-372)

Open
#166 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-Client-Server enhancement
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

If you opt to leave a room (or someone else kicks you), you receive an `m.room.member` event that sets your own `membership` state to `leave`. If someone cancels an invite on you before you joined, you get a membership state change to `leave`.

The only way to distinguish these two cases is to examine the previous state, to see if it used to be `invite` or `joined`. However, the membership state event you receive over the event stream doesn't contain the previous state, it only contains the event ID the previous state was in. Since you're no longer a member of the room, you don't have the necessary permission to look at that state event to remind yourself what that state was.

(Imported from https://matrix.org/jira/browse/SPEC-372)

(Reported by @leonerd)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Matrix membership-state rules described in the issue, especially m.room.member events and the previous state event ID. Determine the intended protocol change with maintainers; done requires an agreed specification update and corresponding validation, but this issue does not name files or tests.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.