1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-17 00:33:44 +00:00

Updated the messageListener observable version to use same logic from the callback version and added comment on the callback version

This commit is contained in:
gbubemismith
2023-08-31 17:37:15 -04:00
parent 08c6a302b2
commit 43db7f6d60

View File

@@ -211,6 +211,9 @@ export class BrowserApi {
private static registeredMessageListeners: any[] = []; private static registeredMessageListeners: any[] = [];
/**
* Use ngzone.run() to ensure callback run inside the Angular zone.
*/
static messageListener( static messageListener(
name: string, name: string,
callback: (message: any, sender: chrome.runtime.MessageSender, response: any) => unknown callback: (message: any, sender: chrome.runtime.MessageSender, response: any) => unknown
@@ -250,16 +253,16 @@ export class BrowserApi {
* and other zone-related behaviors. * and other zone-related behaviors.
* *
* @see /libs/angular/src/utils/run-inside-angular.operator.ts * @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$() { static messageListener$() {
return new Observable<unknown>((subscriber) => { return new Observable<unknown>((subscriber) => {
const handler = (message: unknown) => { const handler = (message: unknown) => {
subscriber.next(message); subscriber.next(message);
}; };
chrome.runtime.onMessage.addListener(handler);
// using the messageListener logic
BrowserApi.messageListener("message", handler);
return () => chrome.runtime.onMessage.removeListener(handler); return () => chrome.runtime.onMessage.removeListener(handler);
}); });
} }