diff --git a/apps/browser/src/background/runtime.background.ts b/apps/browser/src/background/runtime.background.ts index cbe3fec016b..98bdd324d9e 100644 --- a/apps/browser/src/background/runtime.background.ts +++ b/apps/browser/src/background/runtime.background.ts @@ -42,18 +42,27 @@ export default class RuntimeBackground { } await this.checkOnInstalled(); - const backgroundMessageListener = async ( + const backgroundMessageListener = ( msg: any, sender: chrome.runtime.MessageSender, sendResponse: any ) => { - const response = await this.processMessage(msg, sender); - sendResponse(response); + const messagesWithResponse = ["fido2RegisterCredentialRequest", "fido2GetCredentialRequest"]; + + if (messagesWithResponse.includes(msg.command)) { + this.processMessage(msg, sender).then( + (value) => sendResponse({ result: value }), + (error) => sendResponse({ error: { ...error, message: error.message } }) + ); + return true; + } + + this.processMessage(msg, sender); + return false; }; BrowserApi.messageListener("runtime.background", (msg, sender, sendResponse) => { - backgroundMessageListener(msg, sender, sendResponse); - return true; + return backgroundMessageListener(msg, sender, sendResponse); }); if (this.main.popupOnlyContext) { (window as any).bitwardenBackgroundMessageListener = backgroundMessageListener; @@ -209,17 +218,9 @@ export default class RuntimeBackground { this.platformUtilsService.copyToClipboard(msg.identifier, { window: window }); break; case "fido2RegisterCredentialRequest": - try { - return { result: await this.main.fido2Service.createCredential(msg.data) }; - } catch (error) { - return { error: { ...error, message: error.message } }; - } + return await this.main.fido2Service.createCredential(msg.data); case "fido2GetCredentialRequest": - try { - return { result: await this.main.fido2Service.assertCredential(msg.data) }; - } catch (error) { - return { error: { ...error, message: error.message } }; - } + return await this.main.fido2Service.assertCredential(msg.data); } return undefined; } diff --git a/apps/browser/src/browser/browserApi.ts b/apps/browser/src/browser/browserApi.ts index 8cda35125be..ff0737e56ff 100644 --- a/apps/browser/src/browser/browserApi.ts +++ b/apps/browser/src/browser/browserApi.ts @@ -139,8 +139,8 @@ export class BrowserApi { callback: (message: any, sender: chrome.runtime.MessageSender, response: any) => unknown ) { chrome.runtime.onMessage.addListener( - (msg: any, sender: chrome.runtime.MessageSender, response: any) => { - return callback(msg, sender, response); + (msg: any, sender: chrome.runtime.MessageSender, sendResponse: any) => { + return callback(msg, sender, sendResponse) === true; } ); }