Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Generalise _locally_reject_invite #8751

Merged
merged 4 commits into from
Nov 16, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/8751.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Generalise `RoomMemberHandler._locally_reject_invite` for any membership type.
38 changes: 20 additions & 18 deletions synapse/handlers/room_member.py
Original file line number Diff line number Diff line change
Expand Up @@ -1104,32 +1104,34 @@ async def remote_reject_invite(
#
logger.warning("Failed to reject invite: %s", e)

return await self._locally_reject_invite(
return await self._generate_local_out_of_band_membership(
invite_event, txn_id, requester, content
)

async def _locally_reject_invite(
async def _generate_local_out_of_band_membership(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
async def _generate_local_out_of_band_membership(
async def _generate_local_out_of_band_leave(

?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's not any ol' membership is it :D

self,
invite_event: EventBase,
previous_membership_event: EventBase,
txn_id: Optional[str],
requester: Requester,
content: JsonDict,
) -> Tuple[str, int]:
"""Generate a local invite rejection
):
"""Generate a local leave event for a room

This is called after we fail to reject an invite via a remote server. It
generates an out-of-band membership event locally.
This can be called after we e.g fail to reject an invite via a remote server.
It generates an out-of-band membership event locally.

Args:
invite_event: the invite to be rejected
previous_membership_event: the previous membership event for this user
txn_id: optional transaction ID supplied by the client
requester: user making the rejection request, according to the access token
content: additional content to include in the rejection event.
requester: user making the request, according to the access token
content: additional content to include in the leave event.
Normally an empty dict.
"""

room_id = invite_event.room_id
target_user = invite_event.state_key
Returns:
A tuple containing (event_id, stream_id of the leave event)
"""
room_id = previous_membership_event.room_id
target_user = previous_membership_event.state_key

content["membership"] = Membership.LEAVE

Expand All @@ -1141,12 +1143,12 @@ async def _locally_reject_invite(
"state_key": target_user,
}

# the auth events for the new event are the same as that of the invite, plus
# the invite itself.
# the auth events for the new event are the same as that of the previous event, plus
# the event itself.
#
# the prev_events are just the invite.
prev_event_ids = [invite_event.event_id]
auth_event_ids = invite_event.auth_event_ids() + prev_event_ids
# the prev_events consist solely of the previous membership event.
prev_event_ids = [previous_membership_event.event_id]
auth_event_ids = previous_membership_event.auth_event_ids() + prev_event_ids

event, context = await self.event_creation_handler.create_event(
requester,
Expand Down