@@ -665,37 +665,28 @@ export default class SettingsStore {
665
665
if ( localStorage . getItem ( MIGRATION_DONE_FLAG ) ) return ;
666
666
if ( isFreshLogin ) return ;
667
667
668
+ if ( isFreshLogin ) return ;
668
669
const client = MatrixClientPeg . safeGet ( ) ;
669
670
670
- const doMigration = async ( ) : Promise < void > => {
671
- logger . info ( "Performing one-time settings migration of URL previews in E2EE rooms" ) ;
672
-
673
- const roomAccounthandler = LEVEL_HANDLERS [ SettingLevel . ROOM_ACCOUNT ] ;
674
-
675
- for ( const room of client . getRooms ( ) ) {
676
- // We need to use the handler directly because this setting is no longer supported
677
- // at this level at all
678
- const val = roomAccounthandler . getValue ( "urlPreviewsEnabled_e2ee" , room . roomId ) ;
671
+ while ( ! client . isInitialSyncComplete ( ) ) {
672
+ await new Promise ( ( r ) => client . once ( ClientEvent . Sync , r ) ) ;
673
+ }
679
674
680
- if ( val !== undefined ) {
681
- await SettingsStore . setValue ( "urlPreviewsEnabled_e2ee" , room . roomId , SettingLevel . ROOM_DEVICE , val ) ;
682
- }
683
- }
675
+ logger . info ( "Performing one-time settings migration of URL previews in E2EE rooms" ) ;
684
676
685
- localStorage . setItem ( MIGRATION_DONE_FLAG , "true" ) ;
686
- } ;
677
+ const roomAccounthandler = LEVEL_HANDLERS [ SettingLevel . ROOM_ACCOUNT ] ;
687
678
688
- const onSync = ( state : SyncState ) : void => {
689
- if ( state === SyncState . Prepared ) {
690
- client . removeListener ( ClientEvent . Sync , onSync ) ;
679
+ for ( const room of client . getRooms ( ) ) {
680
+ // We need to use the handler directly because this setting is no longer supported
681
+ // at this level at all
682
+ const val = roomAccounthandler . getValue ( "urlPreviewsEnabled_e2ee" , room . roomId ) ;
691
683
692
- doMigration ( ) . catch ( ( e ) => {
693
- logger . error ( "Failed to migrate URL previews in E2EE rooms:" , e ) ;
694
- } ) ;
684
+ if ( val !== undefined ) {
685
+ await SettingsStore . setValue ( "urlPreviewsEnabled_e2ee" , room . roomId , SettingLevel . ROOM_DEVICE , val ) ;
695
686
}
696
- } ;
687
+ }
697
688
698
- client . on ( ClientEvent . Sync , onSync ) ;
689
+ localStorage . setItem ( MIGRATION_DONE_FLAG , "true" ) ;
699
690
}
700
691
701
692
/**
@@ -754,7 +745,9 @@ export default class SettingsStore {
754
745
// (so around October 2024).
755
746
// The consequences of missing the migration are only that URL previews will
756
747
// be disabled in E2EE rooms.
757
- SettingsStore . migrateURLPreviewsE2EE ( isFreshLogin ) ;
748
+ SettingsStore . migrateURLPreviewsE2EE ( isFreshLogin ) . catch ( ( e ) => {
749
+ logger . error ( "Failed to migrate URL previews in E2EE rooms:" , e ) ;
750
+ } ) ;
758
751
759
752
// This can be removed once enough users have run a version of Element with
760
753
// this migration.
0 commit comments