From 00e21855f4c4b89541111d542349befdd8ff1686 Mon Sep 17 00:00:00 2001 From: Shane Melton Date: Wed, 12 Feb 2025 15:36:29 -0800 Subject: [PATCH] [PM-14426] Refactor at-risk-password-page.service.ts to use the same state definition for banner and carousel dismissal --- .../at-risk-password-page.service.ts | 33 +++++++++++++++---- .../src/platform/state/state-definitions.ts | 1 + 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/apps/browser/src/vault/popup/components/at-risk-passwords/at-risk-password-page.service.ts b/apps/browser/src/vault/popup/components/at-risk-passwords/at-risk-password-page.service.ts index f8cd4a6065..4f3c235dc3 100644 --- a/apps/browser/src/vault/popup/components/at-risk-passwords/at-risk-password-page.service.ts +++ b/apps/browser/src/vault/popup/components/at-risk-passwords/at-risk-password-page.service.ts @@ -2,18 +2,27 @@ import { inject, Injectable } from "@angular/core"; import { map, Observable } from "rxjs"; import { - BANNERS_DISMISSED_DISK, + AT_RISK_PASSWORDS_PAGE_DISK, StateProvider, UserKeyDefinition, } from "@bitwarden/common/platform/state"; import { UserId } from "@bitwarden/common/types/guid"; -export const AT_RISK_PASSWORD_AUTOFILL_CALLOUT_DISMISSED_KEY = new UserKeyDefinition( - BANNERS_DISMISSED_DISK, - "atRiskPasswordAutofillBannerDismissed", +const AUTOFILL_CALLOUT_DISMISSED_KEY = new UserKeyDefinition( + AT_RISK_PASSWORDS_PAGE_DISK, + "autofillCalloutDismissed", { deserializer: (bannersDismissed) => bannersDismissed, - clearOn: [], // Do not clear dismissed banners + clearOn: [], // Do not clear dismissed callout + }, +); + +const GETTING_STARTED_CAROUSEL_DISMISSED_KEY = new UserKeyDefinition( + AT_RISK_PASSWORDS_PAGE_DISK, + "gettingStartedCarouselDismissed", + { + deserializer: (bannersDismissed) => bannersDismissed, + clearOn: [], // Do not clear dismissed carousel }, ); @@ -23,13 +32,23 @@ export class AtRiskPasswordPageService { isCalloutDismissed(userId: UserId): Observable { return this.stateProvider - .getUser(userId, AT_RISK_PASSWORD_AUTOFILL_CALLOUT_DISMISSED_KEY) + .getUser(userId, AUTOFILL_CALLOUT_DISMISSED_KEY) .state$.pipe(map((dismissed) => !!dismissed)); } async dismissCallout(userId: UserId): Promise { + await this.stateProvider.getUser(userId, AUTOFILL_CALLOUT_DISMISSED_KEY).update(() => true); + } + + isGettingStartedDismissed(userId: UserId): Observable { + return this.stateProvider + .getUser(userId, GETTING_STARTED_CAROUSEL_DISMISSED_KEY) + .state$.pipe(map((dismissed) => !!dismissed)); + } + + async dismissGettingStarted(userId: UserId): Promise { await this.stateProvider - .getUser(userId, AT_RISK_PASSWORD_AUTOFILL_CALLOUT_DISMISSED_KEY) + .getUser(userId, GETTING_STARTED_CAROUSEL_DISMISSED_KEY) .update(() => true); } } diff --git a/libs/common/src/platform/state/state-definitions.ts b/libs/common/src/platform/state/state-definitions.ts index c7901bc34e..84d5b81ee7 100644 --- a/libs/common/src/platform/state/state-definitions.ts +++ b/libs/common/src/platform/state/state-definitions.ts @@ -199,3 +199,4 @@ export const NEW_DEVICE_VERIFICATION_NOTICE = new StateDefinition( ); export const VAULT_APPEARANCE = new StateDefinition("vaultAppearance", "disk"); export const SECURITY_TASKS_DISK = new StateDefinition("securityTasks", "disk"); +export const AT_RISK_PASSWORDS_PAGE_DISK = new StateDefinition("atRiskPasswordsPage", "disk");