From a9a151b1b94885bf1bc1d84efd47a3cb96540a94 Mon Sep 17 00:00:00 2001 From: Jeffrey Holland Date: Mon, 24 Mar 2025 14:53:55 +0100 Subject: [PATCH] Add error handling for missing session or other errors --- apps/desktop/src/locales/en/messages.json | 12 +++++++ .../passkeys/create/fido2-create.component.ts | 31 +++++++++++++++---- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json index 7bc46ffc981..1015849dae9 100644 --- a/apps/desktop/src/locales/en/messages.json +++ b/apps/desktop/src/locales/en/messages.json @@ -803,6 +803,12 @@ "unexpectedError": { "message": "An unexpected error has occurred." }, + "unexpectedErrorShort": { + "message": "Unexpected error" + }, + "closeThisBitwardenWindow": { + "message": "Close this Bitwarden window and try again." + }, "itemInformation": { "message": "Item information" }, @@ -3592,6 +3598,12 @@ "saveNewPasskey": { "message": "Save as new login" }, + "unableToSavePasskey": { + "message": "Unable to save passkey" + }, + "closeBitwarden": { + "message": "Close Bitwarden" + }, "allowScreenshots": { "message": "Allow screen capture" }, diff --git a/apps/desktop/src/modal/passkeys/create/fido2-create.component.ts b/apps/desktop/src/modal/passkeys/create/fido2-create.component.ts index 9a3044296e1..dbdfc2dac62 100644 --- a/apps/desktop/src/modal/passkeys/create/fido2-create.component.ts +++ b/apps/desktop/src/modal/passkeys/create/fido2-create.component.ts @@ -9,7 +9,7 @@ import { AccountService } from "@bitwarden/common/auth/abstractions/account.serv import { DomainSettingsService } from "@bitwarden/common/autofill/services/domain-settings.service"; import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service"; import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view"; -import { +import { DialogService , BadgeModule, ButtonModule, DialogModule, @@ -59,6 +59,7 @@ export class Fido2CreateComponent implements OnInit { private readonly fido2UserInterfaceService: DesktopFido2UserInterfaceService, private readonly accountService: AccountService, private readonly cipherService: CipherService, + private readonly dialogService: DialogService, private readonly domainSettingsService: DomainSettingsService, private readonly router: Router, ) {} @@ -101,19 +102,37 @@ export class Fido2CreateComponent implements OnInit { try { // Retrieve the current UI session to control the flow if (!this.session) { - // todo: handle error - throw new Error("No session found"); + const confirmed = await this.dialogService.openSimpleDialog({ + title: { key: "unexpectedErrorShort" }, + content: { key: "closeThisBitwardenWindow" }, + type: "danger", + acceptButtonText: { key: "closeBitwarden" }, + cancelButtonText: null, + }); + if (confirmed) { + await this.closeModal(); + } + } else { + this.session.notifyConfirmCreateCredential(true); } - this.session.notifyConfirmCreateCredential(true); - // Not sure this clean up should happen here or in session. // The session currently toggles modal on and send us here // But if this route is somehow opened outside of session we want to make sure we clean up? await this.router.navigate(["/"]); await this.desktopSettingsService.setModalMode(false); } catch { - // TODO: Handle error appropriately + const confirmed = await this.dialogService.openSimpleDialog({ + title: { key: "unableToSavePasskey" }, + content: { key: "closeThisBitwardenWindow" }, + type: "danger", + acceptButtonText: { key: "closeBitwarden" }, + cancelButtonText: null, + }); + + if (confirmed) { + await this.closeModal(); + } } }