diff --git a/apps/web/src/app/billing/individual/subscription/account-subscription.component.ts b/apps/web/src/app/billing/individual/subscription/account-subscription.component.ts index 820dfeaddfd..eeccd746165 100644 --- a/apps/web/src/app/billing/individual/subscription/account-subscription.component.ts +++ b/apps/web/src/app/billing/individual/subscription/account-subscription.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component, computed, inject, resource } from "@angular/core"; import { toSignal } from "@angular/core/rxjs-interop"; import { ActivatedRoute, Router } from "@angular/router"; -import { firstValueFrom, lastValueFrom, map } from "rxjs"; +import { lastValueFrom, map } from "rxjs"; import { JslibModule } from "@bitwarden/angular/jslib.module"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; @@ -76,7 +76,7 @@ export class AccountSubscriptionComponent { await this.router.navigate(["/settings/subscription/premium"]); return null; }; - const account = await firstValueFrom(this.accountService.activeAccount$); + const account = this.activeAccount(); if (!account) { return await redirectToPremiumPage(); } @@ -181,6 +181,8 @@ export class AccountSubscriptionComponent { { initialValue: false }, ); + readonly activeAccount = toSignal(this.accountService.activeAccount$); + onSubscriptionCardAction = async (action: SubscriptionCardAction) => { switch (action) { case SubscriptionCardActions.ContactSupport: @@ -213,19 +215,20 @@ export class AccountSubscriptionComponent { await this.router.navigate(["../payment-details"], { relativeTo: this.activatedRoute }); break; case SubscriptionCardActions.Resubscribe: { - const account = await firstValueFrom(this.accountService.activeAccount$); + const account = this.activeAccount(); if (!account) { return; } const currentSubscription = this.subscription.value(); - const isIncompleteExpired = - currentSubscription?.status === SubscriptionStatuses.IncompleteExpired; + const shouldForcePremium = + currentSubscription?.status === SubscriptionStatuses.IncompleteExpired || + currentSubscription?.status === SubscriptionStatuses.Canceled; const dialogRef = UnifiedUpgradeDialogComponent.open(this.dialogService, { data: { account, - ...(isIncompleteExpired + ...(shouldForcePremium ? { initialStep: UnifiedUpgradeDialogStep.Payment, selectedPlan: PersonalSubscriptionPricingTierIds.Premium, diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 74a873f94e4..ce9b6aac6b8 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -3267,10 +3267,10 @@ "message": "Resubscribe" }, "yourSubscriptionIsExpired": { - "message": "Your subscription is expired. Please resubscribe to continue using premium features." + "message": "Your subscription is expired" }, "yourSubscriptionIsCanceled": { - "message": "Your subscription is canceled. Please resubscribe to continue using premium features." + "message": "Your subscription is canceled" }, "cancelConfirmation": { "message": "Are you sure you want to cancel? You will lose access to all of this subscription's features at the end of this billing cycle."