1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-12 06:13:38 +00:00
Files
browser/apps/browser/src/platform/utils/from-chrome-runtime-messaging.ts
Justin Baur 395ed3f5d4 [PM-7489] Introduce MessageSender & MessageListener (#8709)
* Introduce MessageSender

* Update `messageSenderFactory`

* Remove Comment

* Use BrowserApi

* Update Comment

* Rename to CommandDefinition

* Add More Documentation to MessageSender

* Add `EMPTY` helpers and remove NoopMessageSender

* Calm Down Logging

* Limit Logging On Known Errors

* Use `messageStream` Parameter

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>

* Add eslint rules

* Update Error Handling

Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>

* Delete Lazy Classes In Favor of Observable Factories

* Remove Fido Messages

---------

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
Co-authored-by: Cesar Gonzalez <cesar.a.gonzalezcs@gmail.com>
2024-04-19 15:02:40 -04:00

27 lines
726 B
TypeScript

import { map, share } from "rxjs";
import { tagAsExternal } from "@bitwarden/common/platform/messaging/internal";
import { fromChromeEvent } from "../browser/from-chrome-event";
/**
* Creates an observable that listens to messages through `chrome.runtime.onMessage`.
* @returns An observable stream of messages.
*/
export const fromChromeRuntimeMessaging = () => {
return fromChromeEvent(chrome.runtime.onMessage).pipe(
map(([message, sender]) => {
message ??= {};
// Force the sender onto the message as long as we won't overwrite anything
if (!("webExtSender" in message)) {
message.webExtSender = sender;
}
return message;
}),
tagAsExternal,
share(),
);
};