From 034713256cee9a8e164295c88157fe33d8372c81 Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Tue, 2 Jul 2024 15:45:41 +0200 Subject: [PATCH] feat: fix all migrations that were setting undefined values --- .../12-move-environment-state-to-providers.ts | 10 ++++++---- .../38-migrate-token-svc-to-state-provider.ts | 6 ++++-- .../51-move-remembered-email-to-state-providers.ts | 6 ++++-- .../state-migrations/migrations/60-known-accounts.ts | 6 ++++-- ...ate-vault-timeout-settings-svc-to-state-provider.ts | 10 ++++++---- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/libs/common/src/state-migrations/migrations/12-move-environment-state-to-providers.ts b/libs/common/src/state-migrations/migrations/12-move-environment-state-to-providers.ts index c95e726bfe..0877289b93 100644 --- a/libs/common/src/state-migrations/migrations/12-move-environment-state-to-providers.ts +++ b/libs/common/src/state-migrations/migrations/12-move-environment-state-to-providers.ts @@ -47,10 +47,12 @@ export class MoveEnvironmentStateToProviders extends Migrator<11, 12> { }), ); - // Delete legacy global data - delete legacyGlobal?.region; - delete legacyGlobal?.environmentUrls; - await helper.set("global", legacyGlobal); + if (legacyGlobal != null) { + // Delete legacy global data + delete legacyGlobal?.region; + delete legacyGlobal?.environmentUrls; + await helper.set("global", legacyGlobal); + } } async rollback(helper: MigrationHelper): Promise { diff --git a/libs/common/src/state-migrations/migrations/38-migrate-token-svc-to-state-provider.ts b/libs/common/src/state-migrations/migrations/38-migrate-token-svc-to-state-provider.ts index 640e63cdc5..0435ca2bac 100644 --- a/libs/common/src/state-migrations/migrations/38-migrate-token-svc-to-state-provider.ts +++ b/libs/common/src/state-migrations/migrations/38-migrate-token-svc-to-state-provider.ts @@ -143,8 +143,10 @@ export class TokenServiceStateProviderMigrator extends Migrator<37, 38> { await helper.setToGlobal(EMAIL_TWO_FACTOR_TOKEN_RECORD_DISK_LOCAL, emailTwoFactorTokenRecord); // Delete global data - delete globalData?.twoFactorToken; - await helper.set("global", globalData); + if (globalData != null) { + delete globalData?.twoFactorToken; + await helper.set("global", globalData); + } } async rollback(helper: MigrationHelper): Promise { diff --git a/libs/common/src/state-migrations/migrations/51-move-remembered-email-to-state-providers.ts b/libs/common/src/state-migrations/migrations/51-move-remembered-email-to-state-providers.ts index b2b0818719..7140fd45bc 100644 --- a/libs/common/src/state-migrations/migrations/51-move-remembered-email-to-state-providers.ts +++ b/libs/common/src/state-migrations/migrations/51-move-remembered-email-to-state-providers.ts @@ -20,8 +20,10 @@ export class RememberedEmailMigrator extends Migrator<50, 51> { } // Delete legacy global data - delete legacyGlobal?.rememberedEmail; - await helper.set("global", legacyGlobal); + if (legacyGlobal != null) { + delete legacyGlobal?.rememberedEmail; + await helper.set("global", legacyGlobal); + } } async rollback(helper: MigrationHelper): Promise { diff --git a/libs/common/src/state-migrations/migrations/60-known-accounts.ts b/libs/common/src/state-migrations/migrations/60-known-accounts.ts index 3b02a5acc4..3251993788 100644 --- a/libs/common/src/state-migrations/migrations/60-known-accounts.ts +++ b/libs/common/src/state-migrations/migrations/60-known-accounts.ts @@ -105,7 +105,9 @@ export class KnownAccountsMigrator extends Migrator<59, 60> { private async migrateActiveAccountId(helper: MigrationHelper) { const activeAccountId = await helper.get("activeUserId"); - await helper.setToGlobal(ACCOUNT_ACTIVE_ACCOUNT_ID, activeAccountId); - await helper.remove("activeUserId"); + if (activeAccountId != null) { + await helper.setToGlobal(ACCOUNT_ACTIVE_ACCOUNT_ID, activeAccountId); + await helper.remove("activeUserId"); + } } } diff --git a/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts b/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts index 7451fd3751..f4a5626b1c 100644 --- a/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts +++ b/libs/common/src/state-migrations/migrations/62-migrate-vault-timeout-settings-svc-to-state-provider.ts @@ -122,10 +122,12 @@ export class VaultTimeoutSettingsServiceStateProviderMigrator extends Migrator<6 await Promise.all([...accounts.map(({ userId, account }) => migrateAccount(userId, account))]); - // Delete global data (works for browser extension and web; CLI doesn't have these as global settings). - delete globalData?.vaultTimeout; - delete globalData?.vaultTimeoutAction; - await helper.set("global", globalData); + if (globalData != null) { + // Delete global data (works for browser extension and web; CLI doesn't have these as global settings). + delete globalData?.vaultTimeout; + delete globalData?.vaultTimeoutAction; + await helper.set("global", globalData); + } // Remove desktop only settings. These aren't found by the above global key removal b/c of // the different storage key format. This removal does not cause any issues on migrating for other clients.