import { Component, OnInit } from "@angular/core"; import { ActivatedRoute } from "@angular/router"; import { combineLatestWith, Observable, startWith, switchMap } from "rxjs"; import { DialogServiceAbstraction } from "@bitwarden/angular/services/dialog"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { SecretListView } from "../models/view/secret-list.view"; import { SecretsListComponent } from "../shared/secrets-list.component"; import { SecretDeleteDialogComponent, SecretDeleteOperation, } from "./dialog/secret-delete.component"; import { OperationType, SecretDialogComponent, SecretOperation, } from "./dialog/secret-dialog.component"; import { SecretService } from "./secret.service"; @Component({ selector: "sm-secrets", templateUrl: "./secrets.component.html", }) export class SecretsComponent implements OnInit { protected secrets$: Observable; protected search: string; private organizationId: string; constructor( private route: ActivatedRoute, private secretService: SecretService, private dialogService: DialogServiceAbstraction, private platformUtilsService: PlatformUtilsService, private i18nService: I18nService ) {} ngOnInit() { this.secrets$ = this.secretService.secret$.pipe( startWith(null), combineLatestWith(this.route.params), switchMap(async ([_, params]) => { this.organizationId = params.organizationId; return await this.getSecrets(); }) ); if (this.route.snapshot.queryParams.search) { this.search = this.route.snapshot.queryParams.search; } } private async getSecrets(): Promise { return await this.secretService.getSecrets(this.organizationId); } openEditSecret(secretId: string) { this.dialogService.open(SecretDialogComponent, { data: { organizationId: this.organizationId, operation: OperationType.Edit, secretId: secretId, }, }); } openDeleteSecret(event: SecretListView[]) { this.dialogService.open(SecretDeleteDialogComponent, { data: { secrets: event, }, }); } openNewSecretDialog() { this.dialogService.open(SecretDialogComponent, { data: { organizationId: this.organizationId, operation: OperationType.Add, }, }); } copySecretName(name: string) { SecretsListComponent.copySecretName(name, this.platformUtilsService, this.i18nService); } copySecretValue(id: string) { SecretsListComponent.copySecretValue( id, this.platformUtilsService, this.i18nService, this.secretService ); } copySecretUuid(id: string) { SecretsListComponent.copySecretUuid(id, this.platformUtilsService, this.i18nService); } }