diff --git a/apps/web/src/app/auth/register-form/register-form.component.ts b/apps/web/src/app/auth/register-form/register-form.component.ts index c9be1c4b76..3e60b5fe01 100644 --- a/apps/web/src/app/auth/register-form/register-form.component.ts +++ b/apps/web/src/app/auth/register-form/register-form.component.ts @@ -1,6 +1,8 @@ -import { Component, Input, OnInit } from "@angular/core"; +import { Component, Input, OnInit, OnDestroy } from "@angular/core"; import { UntypedFormBuilder } from "@angular/forms"; import { Router } from "@angular/router"; +import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/auth/components/register.component"; import { FormValidationErrorsService } from "@bitwarden/angular/platform/abstractions/form-validation-errors.service"; @@ -9,6 +11,8 @@ import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { AuditService } from "@bitwarden/common/abstractions/audit.service"; import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction"; import { MasterPasswordPolicyOptions } from "@bitwarden/common/admin-console/models/domain/master-password-policy-options"; +import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/reference-event.request"; import { RegisterRequest } from "@bitwarden/common/models/request/register.request"; import { CryptoService } from "@bitwarden/common/platform/abstractions/crypto.service"; @@ -17,14 +21,12 @@ import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.servic 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 { StateProvider } from "@bitwarden/common/platform/state"; import { DialogService, ToastService } from "@bitwarden/components"; import { PasswordGenerationServiceAbstraction } from "@bitwarden/generator-legacy"; -import { AcceptOrganizationInviteService } from "../organization-invite/accept-organization.service"; import { LoginEmailService } from "../../../../../../libs/auth/src/common/services/login-email/login-email.service"; -import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; -import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; -import { StateProvider } from "@bitwarden/common/platform/state"; +import { AcceptOrganizationInviteService } from "../organization-invite/accept-organization.service"; @Component({ selector: "app-register-form", @@ -41,7 +43,9 @@ import { StateProvider } from "@bitwarden/common/platform/state"; }, ], }) -export class RegisterFormComponent extends BaseRegisterComponent implements OnInit { +export class RegisterFormComponent extends BaseRegisterComponent implements OnInit, OnDestroy { + private destroy$ = new Subject(); + @Input() queryParamEmail: string; @Input() queryParamFromOrgInvite: boolean; @Input() enforcedPolicyOptions: MasterPasswordPolicyOptions; @@ -115,13 +119,18 @@ export class RegisterFormComponent extends BaseRegisterComponent implements OnIn /** * If the user has a login email, set the email field to the login email. */ - this.loginEmailService.loginEmail$.subscribe((email) => { + this.loginEmailService.loginEmail$.pipe(takeUntil(this.destroy$)).subscribe((email) => { if (email) { this.formGroup.patchValue({ email }); } }); } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } + async submit() { if ( this.enforcedPolicyOptions != null &&