import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; import { UntypedFormBuilder } from "@angular/forms"; import { Router } from "@angular/router"; import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/auth/components/register.component"; import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; import { LoginStrategyServiceAbstraction } from "@bitwarden/auth/common"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { BroadcasterService } from "@bitwarden/common/platform/abstractions/broadcaster.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/platform/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service"; import { StateService } from "@bitwarden/common/platform/abstractions/state.service"; import { DialogService, ToastService } from "@bitwarden/components"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/generator-legacy"; import { KeyService } from "@bitwarden/key-management"; const BroadcasterSubscriptionId = "RegisterComponent"; @Component({ selector: "app-register", templateUrl: "register.component.html", }) export class RegisterComponent extends BaseRegisterComponent implements OnInit, OnDestroy { constructor( formValidationErrorService: FormValidationErrorsService, formBuilder: UntypedFormBuilder, loginStrategyService: LoginStrategyServiceAbstraction, router: Router, i18nService: I18nService, keyService: KeyService, apiService: ApiService, stateService: StateService, platformUtilsService: PlatformUtilsService, passwordGenerationService: PasswordGenerationServiceAbstraction, environmentService: EnvironmentService, private broadcasterService: BroadcasterService, private ngZone: NgZone, logService: LogService, auditService: AuditService, dialogService: DialogService, toastService: ToastService, ) { super( formValidationErrorService, formBuilder, loginStrategyService, router, i18nService, keyService, apiService, stateService, platformUtilsService, passwordGenerationService, environmentService, logService, auditService, dialogService, toastService, ); } async ngOnInit() { this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => { this.ngZone.run(() => { switch (message.command) { case "windowHidden": this.onWindowHidden(); break; default: } }); }); // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. // eslint-disable-next-line @typescript-eslint/no-floating-promises super.ngOnInit(); } ngOnDestroy() { this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); } onWindowHidden() { this.showPassword = false; } }