Skip to content

Commit 0a1a8a9

Browse files
committed
Fix migrateURLPreviewsE2EE too
1 parent 2c6f0f9 commit 0a1a8a9

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

src/settings/SettingsStore.ts

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -665,37 +665,28 @@ export default class SettingsStore {
665665
if (localStorage.getItem(MIGRATION_DONE_FLAG)) return;
666666
if (isFreshLogin) return;
667667

668+
if (isFreshLogin) return;
668669
const client = MatrixClientPeg.safeGet();
669670

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+
}
679674

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");
684676

685-
localStorage.setItem(MIGRATION_DONE_FLAG, "true");
686-
};
677+
const roomAccounthandler = LEVEL_HANDLERS[SettingLevel.ROOM_ACCOUNT];
687678

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);
691683

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);
695686
}
696-
};
687+
}
697688

698-
client.on(ClientEvent.Sync, onSync);
689+
localStorage.setItem(MIGRATION_DONE_FLAG, "true");
699690
}
700691

701692
/**
@@ -754,7 +745,9 @@ export default class SettingsStore {
754745
// (so around October 2024).
755746
// The consequences of missing the migration are only that URL previews will
756747
// 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+
});
758751

759752
// This can be removed once enough users have run a version of Element with
760753
// this migration.

0 commit comments

Comments
 (0)