diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py
index be120cb12f..2d69cabf43 100644
--- a/synapse/handlers/room.py
+++ b/synapse/handlers/room.py
@@ -567,6 +567,7 @@ class RoomCreationHandler:
await self._send_events_for_new_room(
requester,
new_room_id,
+ new_room_version,
# we expect to override all the presets with initial_state, so this is
# somewhat arbitrary.
room_config={"preset": RoomCreationPreset.PRIVATE_CHAT},
@@ -922,6 +923,7 @@ class RoomCreationHandler:
) = await self._send_events_for_new_room(
requester,
room_id,
+ room_version,
room_config=config,
invite_list=invite_list,
initial_state=initial_state,
@@ -998,6 +1000,7 @@ class RoomCreationHandler:
self,
creator: Requester,
room_id: str,
+ room_version: RoomVersion,
room_config: JsonDict,
invite_list: List[str],
initial_state: MutableStateMap,
@@ -1020,6 +1023,8 @@ class RoomCreationHandler:
the user requesting the room creation
room_id:
room id for the room being created
+ room_version:
+ The room version of the new room.
room_config:
A dict of configuration options. This will be the body of
a /createRoom request; see
@@ -1053,14 +1058,6 @@ class RoomCreationHandler:
# (as this info can't be pulled from the db)
state_map: MutableStateMap[str] = {}
- def create_event_dict(etype: str, content: JsonDict, **kwargs: Any) -> JsonDict:
- e = {"type": etype, "content": content}
-
- e.update(event_keys)
- e.update(kwargs)
-
- return e
-
async def create_event(
etype: str,
content: JsonDict,
@@ -1083,7 +1080,10 @@ class RoomCreationHandler:
nonlocal depth
nonlocal prev_event
- event_dict = create_event_dict(etype, content, **kwargs)
+ # Create the event dictionary.
+ event_dict = {"type": etype, "content": content}
+ event_dict.update(event_keys)
+ event_dict.update(kwargs)
(
new_event,
@@ -1120,7 +1120,9 @@ class RoomCreationHandler:
400, f"'{preset_config}' is not a valid preset", errcode=Codes.BAD_JSON
)
- creation_content.update({"creator": creator_id})
+ # MSC2175 removes the creator field from the create event.
+ if not room_version.msc2175_implicit_room_creator:
+ creation_content["creator"] = creator_id
creation_event, unpersisted_creation_context = await create_event(
EventTypes.Create, creation_content, False
)
|