summary refs log tree commit diff
path: root/synapse/handlers/room_member.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/handlers/room_member.py')
-rw-r--r--synapse/handlers/room_member.py42
1 files changed, 39 insertions, 3 deletions
diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py

index a965c7ec76..f136ee0e97 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py
@@ -414,7 +414,11 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): max_retries = 5 for i in range(max_retries): try: - event, context = await self.event_creation_handler.create_event( + ( + event, + context, + third_party_event, + ) = await self.event_creation_handler.create_event( requester, { "type": EventTypes.Member, @@ -468,6 +472,20 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): ratelimit=ratelimit, ) ) + if third_party_event: + ( + tp_event, + tp_unpersisted_context, + _, + ) = await self.event_creation_handler.create_event( + requester, + third_party_event, + prev_event_ids=[result_event.event_id], + ) + tp_context = await tp_unpersisted_context.persist(tp_event) + await self.event_creation_handler.handle_new_client_event( + requester, events_and_context=[(tp_event, tp_context)] + ) if event.membership == Membership.LEAVE: if prev_member_event_id: @@ -1944,7 +1962,11 @@ class RoomMemberMasterHandler(RoomMemberHandler): max_retries = 5 for i in range(max_retries): try: - event, context = await self.event_creation_handler.create_event( + ( + event, + context, + third_party_event_dict, + ) = await self.event_creation_handler.create_event( requester, event_dict, txn_id=txn_id, @@ -1954,10 +1976,24 @@ class RoomMemberMasterHandler(RoomMemberHandler): ) event.internal_metadata.out_of_band_membership = True + events_and_context = [(event, context)] + if third_party_event_dict: + ( + third_party_event, + third_party_unpersisted_context, + _, + ) = await self.event_creation_handler.create_event( + requester, third_party_event_dict + ) + third_party_context = await third_party_unpersisted_context.persist( + event + ) + events_and_context.append((third_party_event, third_party_context)) + result_event = ( await self.event_creation_handler.handle_new_client_event( requester, - events_and_context=[(event, context)], + events_and_context=events_and_context, extra_users=[UserID.from_string(target_user)], ) )