1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-10-28 07:49:41 +01:00
bitwarden-browser/libs/tools/generator/components/src/credential-generator-history.component.ts

59 lines
1.7 KiB
TypeScript

import { CommonModule } from "@angular/common";
import { Component } from "@angular/core";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
import { RouterLink } from "@angular/router";
import { BehaviorSubject, distinctUntilChanged, map, switchMap } from "rxjs";
import { JslibModule } from "@bitwarden/angular/jslib.module";
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { UserId } from "@bitwarden/common/types/guid";
import {
CardComponent,
IconButtonModule,
NoItemsModule,
SectionComponent,
SectionHeaderComponent,
} from "@bitwarden/components";
import { GeneratedCredential, GeneratorHistoryService } from "@bitwarden/generator-history";
@Component({
standalone: true,
selector: "bit-credential-generator-history",
templateUrl: "credential-generator-history.component.html",
imports: [
CommonModule,
IconButtonModule,
NoItemsModule,
JslibModule,
RouterLink,
CardComponent,
SectionComponent,
SectionHeaderComponent,
],
})
export class CredentialGeneratorHistoryComponent {
protected readonly userId$ = new BehaviorSubject<UserId>(null);
protected readonly credentials$ = new BehaviorSubject<GeneratedCredential[]>([]);
constructor(
private accountService: AccountService,
private history: GeneratorHistoryService,
) {
this.accountService.activeAccount$
.pipe(
takeUntilDestroyed(),
map(({ id }) => id),
distinctUntilChanged(),
)
.subscribe(this.userId$);
this.userId$
.pipe(
takeUntilDestroyed(),
switchMap((id) => id && this.history.credentials$(id)),
map((credentials) => credentials),
)
.subscribe(this.credentials$);
}
}