import { AsyncPipe, CommonModule } from "@angular/common"; import { Component } from "@angular/core"; import { firstValueFrom, Observable, switchMap } from "rxjs"; import { NudgesService, NudgeType } from "@bitwarden/angular/vault"; import { SpotlightComponent } from "@bitwarden/angular/vault/components/spotlight/spotlight.component"; import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { UserId } from "@bitwarden/common/types/guid"; import { TypographyModule } from "@bitwarden/components"; import { I18nPipe } from "@bitwarden/ui-common"; // FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection @Component({ selector: "nudge-generator-spotlight", templateUrl: "nudge-generator-spotlight.component.html", imports: [I18nPipe, SpotlightComponent, AsyncPipe, CommonModule, TypographyModule], }) export class NudgeGeneratorSpotlightComponent { protected readonly NudgeType = NudgeType; private activeUserId$ = this.accountService.activeAccount$.pipe(getUserId); protected showGeneratorSpotlight$: Observable = this.activeUserId$.pipe( switchMap((userId) => this.nudgesService.showNudgeSpotlight$(NudgeType.GeneratorNudgeStatus, userId), ), ); constructor( private nudgesService: NudgesService, private accountService: AccountService, ) {} async dismissGeneratorSpotlight(type: NudgeType) { const activeUserId = await firstValueFrom(this.activeUserId$); await this.nudgesService.dismissNudge(type, activeUserId as UserId); } }