matrix-org / synapse

Synapse: Matrix homeserver written in Python/Twisted.
https://matrix-org.github.io/synapse
Apache License 2.0
11.82k stars 2.13k forks source link

Auto-join rooms when knock accepted #16307

Open daniellekirkwood opened 1 year ago

daniellekirkwood commented 1 year ago

Knocking/Ask to join is being implemented in Element Web. We've hit a flow that we think needs server support to fix.

Knocking is: A type of room allows users to ask-to-join (instead of waiting for an invite), once a user has knocked the admins in the room receive a notification, the new user is accepted to the room and they should automatically be joined.

Issue: Today, once accepted to the room the user is asked to join the room...

https://github.com/matrix-org/synapse/assets/89144281/add41427-9542-4e14-aab0-7e81eb931445

You can see this at 24s in the video.

Ideally - if the user has knocked and been accepted they are then joined to the room - they should not have to click 'join' again...

daniellekirkwood commented 1 year ago

The issue was spotted because once your knock has been accepted the room goes into the Invites room list section and that feels wrong

DMRobertson commented 1 year ago

AFAICS direct transition knock -> join is forbidden by the spec: https://spec.matrix.org/v1.8/client-server-api/#room-membership:

image

The spec change was: https://github.com/matrix-org/matrix-spec-proposals/pull/2403 and see https://github.com/matrix-org/matrix-spec-proposals/blob/main/proposals/2403-knock.md#membership-changes in particular.

I suppose that Synapse could automatically accept the invite (invite -> join) on behalf of the knocking user if it sees a transition from knock -> invite.

clokep commented 1 year ago

I suppose that Synapse could automatically accept the invite (invite -> join) on behalf of the knocking user if it sees a transition from knock -> invite.

I think in the past we've avoided doing automatic events for users like this, but I'm not 100% sure. It seems like the user should just transition to join honestly?

t3chguy commented 1 year ago

I suppose that Synapse could automatically accept the invite (invite -> join) on behalf of the knocking user if it sees a transition from knock -> invite.

As per the spec:

Homeservers are permitted to automatically accept invites as a result of knocks as they should be aware of the user’s intent to join the room.

https://spec.matrix.org/v1.8/client-server-api/#knocking-on-rooms

daniellekirkwood commented 1 year ago

So where does that leave us? Is this still a relevant issue, should the description be updated, or do we need to discuss other options?

clokep commented 1 year ago

So where does that leave us? Is this still a relevant issue, should the description be updated, or do we need to discuss other options?

It sounds like the work needs to get scheduled.