From 0b02d2ee1c2a5ec33e3ec3c85f5298d6e4101d11 Mon Sep 17 00:00:00 2001 From: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com> Date: Fri, 3 May 2024 12:36:10 -0400 Subject: [PATCH] [AC-1970] Add billing navigation group to provider layout (#8941) * Add billing navigation item to provider layout with empty subscription page behind FF. * Fixing tests * Missed build error * Addison's feedback * Remove unused function * Missed one get$ conversion * Fixed background failure --- .../providers/clients/clients.component.ts | 25 +++----- .../providers/providers-layout.component.html | 27 +++++--- .../providers/providers-layout.component.ts | 63 ++++++++----------- .../providers/providers-routing.module.ts | 23 ++++++- .../providers/providers.module.ts | 2 + .../manage-client-organizations.component.ts | 31 ++++----- .../guards/has-consolidated-billing.guard.ts | 30 +++++++++ .../src/app/billing/providers/index.ts | 2 + .../provider-subscription.component.html | 1 + .../provider-subscription.component.ts | 7 +++ .../abstractions/provider.service.ts | 3 + .../services/provider.service.spec.ts | 19 ++++++ .../services/provider.service.ts | 8 ++- .../provider-billing.service.abstraction.ts | 25 ++++++++ 14 files changed, 181 insertions(+), 85 deletions(-) create mode 100644 bitwarden_license/bit-web/src/app/billing/providers/guards/has-consolidated-billing.guard.ts create mode 100644 bitwarden_license/bit-web/src/app/billing/providers/index.ts create mode 100644 bitwarden_license/bit-web/src/app/billing/providers/provider-subscription.component.html create mode 100644 bitwarden_license/bit-web/src/app/billing/providers/provider-subscription.component.ts create mode 100644 libs/common/src/billing/abstractions/provider-billing.service.abstraction.ts diff --git a/bitwarden_license/bit-web/src/app/admin-console/providers/clients/clients.component.ts b/bitwarden_license/bit-web/src/app/admin-console/providers/clients/clients.component.ts index 6875c3816b0..7a96bdc7c70 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/providers/clients/clients.component.ts +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/clients/clients.component.ts @@ -1,17 +1,17 @@ import { Component } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; -import { combineLatest, firstValueFrom, from } from "rxjs"; -import { concatMap, switchMap, takeUntil } from "rxjs/operators"; +import { firstValueFrom, from, map } from "rxjs"; +import { switchMap, takeUntil } from "rxjs/operators"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/admin-console/abstractions/organization/organization-api.service.abstraction"; import { OrganizationService } from "@bitwarden/common/admin-console/abstractions/organization/organization.service.abstraction"; import { ProviderService } from "@bitwarden/common/admin-console/abstractions/provider.service"; -import { ProviderStatusType, ProviderUserType } from "@bitwarden/common/admin-console/enums"; +import { ProviderUserType } from "@bitwarden/common/admin-console/enums"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; +import { canAccessBilling } from "@bitwarden/common/billing/abstractions/provider-billing.service.abstraction"; import { PlanType } from "@bitwarden/common/billing/enums"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; @@ -40,10 +40,6 @@ export class ClientsComponent extends BaseClientsComponent { manageOrganizations = false; showAddExisting = false; - protected consolidatedBillingEnabled$ = this.configService.getFeatureFlag$( - FeatureFlag.EnableConsolidatedBilling, - ); - constructor( private router: Router, private providerService: ProviderService, @@ -75,15 +71,10 @@ export class ClientsComponent extends BaseClientsComponent { .pipe( switchMap((params) => { this.providerId = params.providerId; - return combineLatest([ - this.providerService.get(this.providerId), - this.consolidatedBillingEnabled$, - ]).pipe( - concatMap(([provider, consolidatedBillingEnabled]) => { - if ( - consolidatedBillingEnabled && - provider.providerStatus === ProviderStatusType.Billable - ) { + return this.providerService.get$(this.providerId).pipe( + canAccessBilling(this.configService), + map((canAccessBilling) => { + if (canAccessBilling) { return from( this.router.navigate(["../manage-client-organizations"], { relativeTo: this.activatedRoute, diff --git a/bitwarden_license/bit-web/src/app/admin-console/providers/providers-layout.component.html b/bitwarden_license/bit-web/src/app/admin-console/providers/providers-layout.component.html index 55efbe13864..a1cf2cc5aab 100644 --- a/bitwarden_license/bit-web/src/app/admin-console/providers/providers-layout.component.html +++ b/bitwarden_license/bit-web/src/app/admin-console/providers/providers-layout.component.html @@ -1,5 +1,5 @@ -