mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 09:13:33 +00:00
* Updated billing state provider to not rely on ActiveUserStateProvider * Updated usages * Resolved browser build * Resolved web build * Resolved CLI build * resolved desktop build * Update apps/cli/src/tools/send/commands/create.command.ts Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com> * Move subscription visibility logic from component to service * Resolved unit test failures. Using existing userIds where present * Simplified activeUserId access * Resolved typescript strict errors * Resolved broken unit test * Resolved ts strict error --------- Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com>
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { Directive, OnInit, TemplateRef, ViewContainerRef } from "@angular/core";
|
|
import { firstValueFrom } from "rxjs";
|
|
|
|
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
|
import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions/account/billing-account-profile-state.service";
|
|
|
|
/**
|
|
* Hides the element if the user has premium.
|
|
*/
|
|
@Directive({
|
|
selector: "[appNotPremium]",
|
|
})
|
|
export class NotPremiumDirective implements OnInit {
|
|
constructor(
|
|
private templateRef: TemplateRef<any>,
|
|
private viewContainer: ViewContainerRef,
|
|
private billingAccountProfileStateService: BillingAccountProfileStateService,
|
|
private accountService: AccountService,
|
|
) {}
|
|
|
|
async ngOnInit(): Promise<void> {
|
|
const account = await firstValueFrom(this.accountService.activeAccount$);
|
|
|
|
if (!account) {
|
|
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
return;
|
|
}
|
|
|
|
const premium = await firstValueFrom(
|
|
this.billingAccountProfileStateService.hasPremiumFromAnySource$(account.id),
|
|
);
|
|
|
|
if (premium) {
|
|
this.viewContainer.clear();
|
|
} else {
|
|
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
}
|
|
}
|
|
}
|