From 43db7f6d6070cee2fe084e121dcc54a74c84d4be Mon Sep 17 00:00:00 2001 From: gbubemismith Date: Thu, 31 Aug 2023 17:37:15 -0400 Subject: [PATCH] Updated the messageListener observable version to use same logic from the callback version and added comment on the callback version --- apps/browser/src/platform/browser/browser-api.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/browser/src/platform/browser/browser-api.ts b/apps/browser/src/platform/browser/browser-api.ts index a89f46253e6..fa7f357ba95 100644 --- a/apps/browser/src/platform/browser/browser-api.ts +++ b/apps/browser/src/platform/browser/browser-api.ts @@ -211,6 +211,9 @@ export class BrowserApi { private static registeredMessageListeners: any[] = []; + /** + * Use ngzone.run() to ensure callback run inside the Angular zone. + */ static messageListener( name: string, callback: (message: any, sender: chrome.runtime.MessageSender, response: any) => unknown @@ -250,16 +253,16 @@ export class BrowserApi { * and other zone-related behaviors. * * @see /libs/angular/src/utils/run-inside-angular.operator.ts - * - * This solution was devised to address an issue in the `Fido2Component`, where the - * original message listener operated outside the Angular zone. */ static messageListener$() { return new Observable((subscriber) => { const handler = (message: unknown) => { subscriber.next(message); }; - chrome.runtime.onMessage.addListener(handler); + + // using the messageListener logic + BrowserApi.messageListener("message", handler); + return () => chrome.runtime.onMessage.removeListener(handler); }); }