2222import math
2323import string
2424from collections import OrderedDict
25+ from types import Dict
2526
2627from six import iteritems , string_types
2728
@@ -145,15 +146,16 @@ def upgrade_room(
145146
146147 return ret
147148
148- @defer .inlineCallbacks
149- def _upgrade_room (self , requester , old_room_id , new_version ):
149+ async def _upgrade_room (
150+ self , requester : Requester , old_room_id : str , new_version : RoomVersion ,
151+ ) -> RoomID :
150152 user_id = requester .user .to_string ()
151153
152154 # start by allocating a new room id
153- r = yield self .store .get_room (old_room_id )
155+ r = await self .store .get_room (old_room_id )
154156 if r is None :
155157 raise NotFoundError ("Unknown room id %s" % (old_room_id ,))
156- new_room_id = yield self ._generate_room_id (
158+ new_room_id = await self ._generate_room_id (
157159 creator_id = user_id , is_public = r ["is_public" ], room_version = new_version ,
158160 )
159161
@@ -164,7 +166,7 @@ def _upgrade_room(self, requester, old_room_id, new_version):
164166 (
165167 tombstone_event ,
166168 tombstone_context ,
167- ) = yield self .event_creation_handler .create_event (
169+ ) = await self .event_creation_handler .create_event (
168170 requester ,
169171 {
170172 "type" : EventTypes .Tombstone ,
@@ -178,12 +180,12 @@ def _upgrade_room(self, requester, old_room_id, new_version):
178180 },
179181 token_id = requester .access_token_id ,
180182 )
181- old_room_version = yield self .store .get_room_version_id (old_room_id )
182- yield self .auth .check_from_context (
183+ old_room_version = await self .store .get_room_version_id (old_room_id )
184+ await self .auth .check_from_context (
183185 old_room_version , tombstone_event , tombstone_context
184186 )
185187
186- yield self .clone_existing_room (
188+ await self .clone_existing_room (
187189 requester ,
188190 old_room_id = old_room_id ,
189191 new_room_id = new_room_id ,
@@ -192,25 +194,25 @@ def _upgrade_room(self, requester, old_room_id, new_version):
192194 )
193195
194196 # now send the tombstone
195- yield self .event_creation_handler .send_nonmember_event (
197+ await self .event_creation_handler .send_nonmember_event (
196198 requester , tombstone_event , tombstone_context
197199 )
198200
199- old_room_state = yield tombstone_context .get_current_state_ids ()
201+ old_room_state = await tombstone_context .get_current_state_ids ()
200202
201203 # update any aliases
202- yield self ._move_aliases_to_new_room (
204+ await self ._move_aliases_to_new_room (
203205 requester , old_room_id , new_room_id , old_room_state
204206 )
205207
206208 # Copy over user push rules, tags and migrate room directory state
207- yield self .room_member_handler .transfer_room_state_on_room_upgrade (
209+ await self .room_member_handler .transfer_room_state_on_room_upgrade (
208210 old_room_id , new_room_id
209211 )
210212
211213 # finally, shut down the PLs in the old room, and update them in the new
212214 # room.
213- yield self ._update_upgraded_room_pls (
215+ await self ._update_upgraded_room_pls (
214216 requester , old_room_id , new_room_id , old_room_state ,
215217 )
216218
@@ -443,19 +445,22 @@ def clone_existing_room(
443445 # XXX invites/joins
444446 # XXX 3pid invites
445447
446- @defer .inlineCallbacks
447- def _move_aliases_to_new_room (
448- self , requester , old_room_id , new_room_id , old_room_state
448+ async def _move_aliases_to_new_room (
449+ self ,
450+ requester : Requester ,
451+ old_room_id : str ,
452+ new_room_id : str ,
453+ old_room_state : Dict [(str , str ), str ],
449454 ):
450455 directory_handler = self .hs .get_handlers ().directory_handler
451456
452- aliases = yield self .store .get_aliases_for_room (old_room_id )
457+ aliases = await self .store .get_aliases_for_room (old_room_id )
453458
454459 # check to see if we have a canonical alias.
455460 canonical_alias = None
456461 canonical_alias_event_id = old_room_state .get ((EventTypes .CanonicalAlias , "" ))
457462 if canonical_alias_event_id :
458- canonical_alias_event = yield self .store .get_event (canonical_alias_event_id )
463+ canonical_alias_event = await self .store .get_event (canonical_alias_event_id )
459464 if canonical_alias_event :
460465 canonical_alias = canonical_alias_event .content .get ("alias" , "" )
461466
@@ -475,7 +480,7 @@ def _move_aliases_to_new_room(
475480 for alias_str in aliases :
476481 alias = RoomAlias .from_string (alias_str )
477482 try :
478- yield directory_handler .delete_association (
483+ await directory_handler .delete_association (
479484 requester , alias , send_event = False
480485 )
481486 removed_aliases .append (alias_str )
@@ -496,14 +501,14 @@ def _move_aliases_to_new_room(
496501 # as when you remove an alias from the directory normally - it just means that
497502 # the aliases event gets out of sync with the directory
498503 # (cf https://github.com/vector-im/riot-web/issues/2369)
499- yield directory_handler .send_room_alias_update_event (requester , old_room_id )
504+ await directory_handler .send_room_alias_update_event (requester , old_room_id )
500505 except AuthError as e :
501506 logger .warning ("Failed to send updated alias event on old room: %s" , e )
502507
503508 # we can now add any aliases we successfully removed to the new room.
504509 for alias in removed_aliases :
505510 try :
506- yield directory_handler .create_association (
511+ await directory_handler .create_association (
507512 requester ,
508513 RoomAlias .from_string (alias ),
509514 new_room_id ,
@@ -519,7 +524,7 @@ def _move_aliases_to_new_room(
519524
520525 try :
521526 if canonical_alias and (canonical_alias in removed_aliases ):
522- yield self .event_creation_handler .create_and_send_nonmember_event (
527+ await self .event_creation_handler .create_and_send_nonmember_event (
523528 requester ,
524529 {
525530 "type" : EventTypes .CanonicalAlias ,
@@ -531,7 +536,7 @@ def _move_aliases_to_new_room(
531536 ratelimit = False ,
532537 )
533538
534- yield directory_handler .send_room_alias_update_event (requester , new_room_id )
539+ await directory_handler .send_room_alias_update_event (requester , new_room_id )
535540 except SynapseError as e :
536541 # again I'm not really expecting this to fail, but if it does, I'd rather
537542 # we returned the new room to the client at this point.
0 commit comments