mirror of
https://github.com/bitwarden/browser
synced 2025-12-13 14:53:33 +00:00
[AC-2520] State migration/removal of Unassigned Items Banner state definition (#10080)
* chore: create migration to remove banner dismissed data, refs AC-2520 * chore: remove unassigned items banner state definition, refs AC-2520 * fix: key like definition name updated to match original scope, refs AC-2520
This commit is contained in:
@@ -95,10 +95,6 @@ export const NEW_WEB_LAYOUT_BANNER_DISK = new StateDefinition("newWebLayoutBanne
|
|||||||
web: "disk-local",
|
web: "disk-local",
|
||||||
});
|
});
|
||||||
|
|
||||||
export const UNASSIGNED_ITEMS_BANNER_DISK = new StateDefinition("unassignedItemsBanner", "disk", {
|
|
||||||
web: "disk-local",
|
|
||||||
});
|
|
||||||
|
|
||||||
// Platform
|
// Platform
|
||||||
|
|
||||||
export const APPLICATION_ID_DISK = new StateDefinition("applicationId", "disk", {
|
export const APPLICATION_ID_DISK = new StateDefinition("applicationId", "disk", {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -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<void> {
|
||||||
|
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<void> {
|
||||||
|
throw IRREVERSIBLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user