@ -690,13 +690,14 @@ class RoomCreationHandler:
config : JsonDict ,
ratelimit : bool = True ,
creator_join_profile : Optional [ JsonDict ] = None ,
) - > Tuple [ dict , int ] :
) - > Tuple [ str , Optional [ RoomAlias ] , int ] :
""" Creates a new room.
Args :
requester :
The user who requested the room creation .
config : A dict of configuration options .
requester : The user who requested the room creation .
config : A dict of configuration options . This will be the body of
a / createRoom request ; see
https : / / spec . matrix . org / latest / client - server - api / #post_matrixclientv3createroom
ratelimit : set to False to disable the rate limiter
creator_join_profile :
@ -707,14 +708,17 @@ class RoomCreationHandler:
` avatar_url ` and / or ` displayname ` .
Returns :
First , a dict containing the keys ` room_id ` and , if an alias
was , requested , ` room_alias ` . Secondly , the stream_id of the
last persisted event .
A 3 - tuple containing :
- the room ID ;
- if requested , the room alias , otherwise None ; and
- the ` stream_id ` of the last persisted event .
Raises :
SynapseError if the room ID couldn ' t be stored, 3pid invitation config
validation failed , or something went horribly wrong .
ResourceLimitError if server is blocked to some resource being
exceeded
SynapseError :
if the room ID couldn ' t be stored, 3pid invitation config
validation failed , or something went horribly wrong .
ResourceLimitError :
if server is blocked to some resource being
exceeded
"""
user_id = requester . user . to_string ( )
@ -1024,11 +1028,6 @@ class RoomCreationHandler:
last_sent_event_id = member_event_id
depth + = 1
result = { " room_id " : room_id }
if room_alias :
result [ " room_alias " ] = room_alias . to_string ( )
# Always wait for room creation to propagate before returning
await self . _replication . wait_for_stream_position (
self . hs . config . worker . events_shard_config . get_instance ( room_id ) ,
@ -1036,7 +1035,7 @@ class RoomCreationHandler:
last_stream_id ,
)
return result , last_stream_id
return room_id , room_alias , last_stream_id
async def _send_events_for_new_room (
self ,
@ -1825,7 +1824,7 @@ class RoomShutdownHandler:
new_room_user_id , authenticated_entity = requester_user_id
)
info , stream_id = await self . _room_creation_handler . create_room (
new_room_id , _ , stream_id = await self . _room_creation_handler . create_room (
room_creator_requester ,
config = {
" preset " : RoomCreationPreset . PUBLIC_CHAT ,
@ -1834,7 +1833,6 @@ class RoomShutdownHandler:
} ,
ratelimit = False ,
)
new_room_id = info [ " room_id " ]
logger . info (
" Shutting down room %r , joining to new room: %r " , room_id , new_room_id
@ -1887,6 +1885,7 @@ class RoomShutdownHandler:
# Join users to new room
if new_room_user_id :
assert new_room_id is not None
await self . room_member_handler . update_membership (
requester = target_requester ,
target = target_requester . user ,
@ -1919,6 +1918,7 @@ class RoomShutdownHandler:
aliases_for_room = await self . store . get_aliases_for_room ( room_id )
assert new_room_id is not None
await self . store . update_aliases_for_room (
room_id , new_room_id , requester_user_id
)