From f2eea12b4fe04842f56a84c7e8d9d217c0d73580 Mon Sep 17 00:00:00 2001 From: Justin Baur <19896123+justindbaur@users.noreply.github.com> Date: Tue, 2 Jan 2024 16:55:42 -0500 Subject: [PATCH] Route on switchAccountFinish Message (#7422) --- .../popup/update-temp-password.component.ts | 20 ++++++++++++++++++- .../update-temp-password.component.ts | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/apps/browser/src/auth/popup/update-temp-password.component.ts b/apps/browser/src/auth/popup/update-temp-password.component.ts index f7d952b97f..946b6a8518 100644 --- a/apps/browser/src/auth/popup/update-temp-password.component.ts +++ b/apps/browser/src/auth/popup/update-temp-password.component.ts @@ -1,9 +1,27 @@ import { Component } from "@angular/core"; +import { firstValueFrom } from "rxjs"; import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from "@bitwarden/angular/auth/components/update-temp-password.component"; +import { postLogoutMessageListener$ } from "./utils/post-logout-message-listener"; + @Component({ selector: "app-update-temp-password", templateUrl: "update-temp-password.component.html", }) -export class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent {} +export class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent { + onSuccessfulChangePassword: () => Promise = this.doOnSuccessfulChangePassword.bind(this); + + private async doOnSuccessfulChangePassword() { + // start listening for "switchAccountFinish" or "doneLoggingOut" + const messagePromise = firstValueFrom(postLogoutMessageListener$); + this.messagingService.send("logout"); + // wait for messages + const command = await messagePromise; + + // doneLoggingOut already has a message handler that will navigate us + if (command === "switchAccountFinish") { + this.router.navigate(["/"]); + } + } +} diff --git a/libs/angular/src/auth/components/update-temp-password.component.ts b/libs/angular/src/auth/components/update-temp-password.component.ts index f0c0e6657d..b8ebcdd1c2 100644 --- a/libs/angular/src/auth/components/update-temp-password.component.ts +++ b/libs/angular/src/auth/components/update-temp-password.component.ts @@ -54,7 +54,7 @@ export class UpdateTempPasswordComponent extends BaseChangePasswordComponent { private syncService: SyncService, private logService: LogService, private userVerificationService: UserVerificationService, - private router: Router, + protected router: Router, dialogService: DialogService, ) { super(