|
|
|
@ -36,8 +36,8 @@ There are restrictions to being able to set this membership.
|
|
|
|
|
|
|
|
|
|
### Current membership
|
|
|
|
|
Only users without a current membership or with their current membership
|
|
|
|
|
being "leave" can knock on a room. This means that a user that is banned or
|
|
|
|
|
currently in the room cannot knock on it.
|
|
|
|
|
being "leave" can knock on a room. This means that a user that is banned, has
|
|
|
|
|
already knocked or is currently in the room cannot knock on it.
|
|
|
|
|
|
|
|
|
|
### Join Rules
|
|
|
|
|
The `join_rule` of `m.room.join_rules` must be set to "invite" for a knock to
|
|
|
|
@ -74,6 +74,14 @@ that user can be transitioned to the following possible states:
|
|
|
|
|
- `ban`: In this case, the knock was rejected and the user has been prevented
|
|
|
|
|
from sending further knocks.
|
|
|
|
|
|
|
|
|
|
Users are not allowed to change their membership once set to `knock`, in
|
|
|
|
|
order to prevent users from being able to knock multiple times and spam a
|
|
|
|
|
room.
|
|
|
|
|
|
|
|
|
|
XXX: So if you knock on a room that's then abandoned that's in your `/sync`
|
|
|
|
|
forever? Clients should have a way to tell their server to hide and show
|
|
|
|
|
knocks.
|
|
|
|
|
|
|
|
|
|
## Client-Server API
|
|
|
|
|
Two new endpoints are introduced in the Client-Server API (similarly to
|
|
|
|
|
join): `POST /_matrix/client/r0/rooms/{roomId}/knock` and
|
|
|
|
|