diff --git a/libs/common/src/platform/state/state-definitions.ts b/libs/common/src/platform/state/state-definitions.ts index 6cc2b181b64..53e9ca9fb6e 100644 --- a/libs/common/src/platform/state/state-definitions.ts +++ b/libs/common/src/platform/state/state-definitions.ts @@ -95,10 +95,6 @@ export const NEW_WEB_LAYOUT_BANNER_DISK = new StateDefinition("newWebLayoutBanne web: "disk-local", }); -export const UNASSIGNED_ITEMS_BANNER_DISK = new StateDefinition("unassignedItemsBanner", "disk", { - web: "disk-local", -}); - // Platform export const APPLICATION_ID_DISK = new StateDefinition("applicationId", "disk", { diff --git a/libs/common/src/state-migrations/migrations/67-remove-unassigned-items-banner-dismissed.spec.ts b/libs/common/src/state-migrations/migrations/67-remove-unassigned-items-banner-dismissed.spec.ts new file mode 100644 index 00000000000..2404920a433 --- /dev/null +++ b/libs/common/src/state-migrations/migrations/67-remove-unassigned-items-banner-dismissed.spec.ts @@ -0,0 +1,50 @@ +import { runMigrator } from "../migration-helper.spec"; +import { IRREVERSIBLE } from "../migrator"; + +import { RemoveUnassignedItemsBannerDismissed } from "./67-remove-unassigned-items-banner-dismissed"; + +describe("RemoveUnassignedItemsBannerDismissed", () => { + const sut = new RemoveUnassignedItemsBannerDismissed(66, 67); + + describe("migrate", () => { + it("deletes unassignedItemsBanner from all users", async () => { + const output = await runMigrator(sut, { + global_account_accounts: { + user1: { + email: "user1@email.com", + name: "User 1", + emailVerified: true, + }, + user2: { + email: "user2@email.com", + name: "User 2", + emailVerified: true, + }, + }, + user_user1_unassignedItemsBanner_showBanner: true, + user_user2_unassignedItemsBanner_showBanner: false, + }); + + expect(output).toEqual({ + global_account_accounts: { + user1: { + email: "user1@email.com", + name: "User 1", + emailVerified: true, + }, + user2: { + email: "user2@email.com", + name: "User 2", + emailVerified: true, + }, + }, + }); + }); + }); + + describe("rollback", () => { + it("is irreversible", async () => { + await expect(runMigrator(sut, {}, "rollback")).rejects.toThrow(IRREVERSIBLE); + }); + }); +}); diff --git a/libs/common/src/state-migrations/migrations/67-remove-unassigned-items-banner-dismissed.ts b/libs/common/src/state-migrations/migrations/67-remove-unassigned-items-banner-dismissed.ts new file mode 100644 index 00000000000..de3cee573df --- /dev/null +++ b/libs/common/src/state-migrations/migrations/67-remove-unassigned-items-banner-dismissed.ts @@ -0,0 +1,23 @@ +import { KeyDefinitionLike, MigrationHelper } from "../migration-helper"; +import { IRREVERSIBLE, Migrator } from "../migrator"; + +export const SHOW_BANNER: KeyDefinitionLike = { + key: "showBanner", + stateDefinition: { name: "unassignedItemsBanner" }, +}; + +export class RemoveUnassignedItemsBannerDismissed extends Migrator<66, 67> { + async migrate(helper: MigrationHelper): Promise { + await Promise.all( + (await helper.getAccounts()).map(async ({ userId }) => { + if (helper.getFromUser(userId, SHOW_BANNER) != null) { + await helper.removeFromUser(userId, SHOW_BANNER); + } + }), + ); + } + + async rollback(helper: MigrationHelper): Promise { + throw IRREVERSIBLE; + } +}