From 2e66addd6a171db8df7827639a2135cca785b49b Mon Sep 17 00:00:00 2001 From: SmithThe4th Date: Tue, 3 Jun 2025 12:20:29 -0400 Subject: [PATCH] [PM-19632] Remove security task flag - step 1 (#14904) * Step 1- remove business logic * removed dependency * removed leftover flags --- .../browser/src/background/main.background.ts | 5 +--- .../vault-v2/vault-v2.component.html | 4 +-- .../src/services/jslib-services.module.ts | 1 - libs/common/src/enums/feature-flag.enum.ts | 2 -- .../services/default-task.service.spec.ts | 25 ------------------- .../tasks/services/default-task.service.ts | 12 ++------- 6 files changed, 4 insertions(+), 45 deletions(-) diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 5225ebc0fb1..1b4afabeb66 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -1203,7 +1203,6 @@ export default class MainBackground { this.stateProvider, this.apiService, this.organizationService, - this.configService, this.authService, this.notificationsService, messageListener, @@ -1423,9 +1422,7 @@ export default class MainBackground { this.backgroundSyncService.init(); this.notificationsService.startListening(); - if (await this.configService.getFeatureFlag(FeatureFlag.SecurityTasks)) { - this.taskService.listenForTaskNotifications(); - } + this.taskService.listenForTaskNotifications(); if (await this.configService.getFeatureFlag(FeatureFlag.EndUserNotifications)) { this.endUserNotificationService.listenForEndUserNotifications(); diff --git a/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html b/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html index 42e772be062..da7b1393590 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html +++ b/apps/browser/src/vault/popup/components/vault-v2/vault-v2.component.html @@ -53,9 +53,7 @@ - + diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 08bcaa2165c..1f5adb6260e 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -1511,7 +1511,6 @@ const safeProviders: SafeProvider[] = [ StateProvider, ApiServiceAbstraction, OrganizationServiceAbstraction, - ConfigService, AuthServiceAbstraction, NotificationsService, MessageListener, diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index 91d24ef3e9d..b78f5a1deec 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -51,7 +51,6 @@ export enum FeatureFlag { /* Vault */ PM8851_BrowserOnboardingNudge = "pm-8851-browser-onboarding-nudge", PM9111ExtensionPersistAddEditForm = "pm-9111-extension-persist-add-edit-form", - SecurityTasks = "security-tasks", PM19941MigrateCipherDomainToSdk = "pm-19941-migrate-cipher-domain-to-sdk", CipherKeyEncryption = "cipher-key-encryption", PM18520_UpdateDesktopCipherForm = "pm-18520-desktop-cipher-forms", @@ -98,7 +97,6 @@ export const DefaultFeatureFlagValue = { /* Vault */ [FeatureFlag.PM8851_BrowserOnboardingNudge]: FALSE, [FeatureFlag.PM9111ExtensionPersistAddEditForm]: FALSE, - [FeatureFlag.SecurityTasks]: FALSE, [FeatureFlag.CipherKeyEncryption]: FALSE, [FeatureFlag.PM18520_UpdateDesktopCipherForm]: FALSE, [FeatureFlag.EndUserNotifications]: FALSE, diff --git a/libs/common/src/vault/tasks/services/default-task.service.spec.ts b/libs/common/src/vault/tasks/services/default-task.service.spec.ts index cb22d1296ba..d90889cf113 100644 --- a/libs/common/src/vault/tasks/services/default-task.service.spec.ts +++ b/libs/common/src/vault/tasks/services/default-task.service.spec.ts @@ -7,7 +7,6 @@ import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; import { NotificationType } from "@bitwarden/common/enums"; import { NotificationResponse } from "@bitwarden/common/models/response/notification.response"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { Message, MessageListener } from "@bitwarden/common/platform/messaging"; import { NotificationsService } from "@bitwarden/common/platform/notifications"; import { SecurityTaskId, UserId } from "@bitwarden/common/types/guid"; @@ -25,7 +24,6 @@ describe("Default task service", () => { const userId = "user-id" as UserId; const mockApiSend = jest.fn(); const mockGetAllOrgs$ = jest.fn(); - const mockGetFeatureFlag$ = jest.fn(); const mockAuthStatuses$ = new BehaviorSubject>({}); const mockNotifications$ = new Subject(); const mockMessages$ = new Subject>>(); @@ -34,14 +32,12 @@ describe("Default task service", () => { beforeEach(async () => { mockApiSend.mockClear(); mockGetAllOrgs$.mockClear(); - mockGetFeatureFlag$.mockClear(); fakeStateProvider = new FakeStateProvider(mockAccountServiceWith(userId)); service = new DefaultTaskService( fakeStateProvider, { send: mockApiSend } as unknown as ApiService, { organizations$: mockGetAllOrgs$ } as unknown as OrganizationService, - { getFeatureFlag$: mockGetFeatureFlag$ } as unknown as ConfigService, { authStatuses$: mockAuthStatuses$.asObservable() } as unknown as AuthService, { notifications$: mockNotifications$.asObservable() } as unknown as NotificationsService, { allMessages$: mockMessages$.asObservable() } as unknown as MessageListener, @@ -50,7 +46,6 @@ describe("Default task service", () => { describe("tasksEnabled$", () => { it("should emit true if any organization uses risk insights", async () => { - mockGetFeatureFlag$.mockReturnValue(new BehaviorSubject(true)); mockGetAllOrgs$.mockReturnValue( new BehaviorSubject([ { @@ -70,7 +65,6 @@ describe("Default task service", () => { }); it("should emit false if no organization uses risk insights", async () => { - mockGetFeatureFlag$.mockReturnValue(new BehaviorSubject(true)); mockGetAllOrgs$.mockReturnValue( new BehaviorSubject([ { @@ -88,28 +82,10 @@ describe("Default task service", () => { expect(result).toBe(false); }); - - it("should emit false if the feature flag is off", async () => { - mockGetFeatureFlag$.mockReturnValue(new BehaviorSubject(false)); - mockGetAllOrgs$.mockReturnValue( - new BehaviorSubject([ - { - useRiskInsights: true, - }, - ] as Organization[]), - ); - - const { tasksEnabled$ } = service; - - const result = await firstValueFrom(tasksEnabled$("user-id" as UserId)); - - expect(result).toBe(false); - }); }); describe("tasks$", () => { beforeEach(() => { - mockGetFeatureFlag$.mockReturnValue(new BehaviorSubject(true)); mockGetAllOrgs$.mockReturnValue( new BehaviorSubject([ { @@ -182,7 +158,6 @@ describe("Default task service", () => { describe("pendingTasks$", () => { beforeEach(() => { - mockGetFeatureFlag$.mockReturnValue(new BehaviorSubject(true)); mockGetAllOrgs$.mockReturnValue( new BehaviorSubject([ { diff --git a/libs/common/src/vault/tasks/services/default-task.service.ts b/libs/common/src/vault/tasks/services/default-task.service.ts index a50f736f7fd..5858ba832d5 100644 --- a/libs/common/src/vault/tasks/services/default-task.service.ts +++ b/libs/common/src/vault/tasks/services/default-task.service.ts @@ -15,9 +15,7 @@ import { OrganizationService } from "@bitwarden/common/admin-console/abstraction import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { AuthenticationStatus } from "@bitwarden/common/auth/enums/authentication-status"; import { NotificationType } from "@bitwarden/common/enums"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { MessageListener } from "@bitwarden/common/platform/messaging"; import { NotificationsService } from "@bitwarden/common/platform/notifications"; import { StateProvider } from "@bitwarden/common/platform/state"; @@ -43,20 +41,14 @@ export class DefaultTaskService implements TaskService { private stateProvider: StateProvider, private apiService: ApiService, private organizationService: OrganizationService, - private configService: ConfigService, private authService: AuthService, private notificationService: NotificationsService, private messageListener: MessageListener, ) {} tasksEnabled$ = perUserCache$((userId) => { - return combineLatest([ - this.organizationService - .organizations$(userId) - .pipe(map((orgs) => orgs.some((o) => o.useRiskInsights))), - this.configService.getFeatureFlag$(FeatureFlag.SecurityTasks), - ]).pipe( - map(([atLeastOneOrgEnabled, flagEnabled]) => atLeastOneOrgEnabled && flagEnabled), + return this.organizationService.organizations$(userId).pipe( + map((orgs) => orgs.some((o) => o.useRiskInsights)), distinctUntilChanged(), ); });