1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-15 15:53:27 +00:00

[EC-598] fix: filter messages from other sources

This commit is contained in:
Andreas Coroiu
2023-02-10 14:14:36 +01:00
parent 24dcedb498
commit eb59f180d0

View File

@@ -2,6 +2,8 @@ import { concatMap, filter, firstValueFrom, Observable } from "rxjs";
import { Message, MessageType } from "./message";
const SENDER = "bitwarden-webauthn";
type PostMessageFunction = (message: MessageWithMetadata) => void;
export type Channel = {
@@ -9,7 +11,7 @@ export type Channel = {
postMessage: PostMessageFunction;
};
export type Metadata = { requestId: string };
export type Metadata = { SENDER: typeof SENDER; requestId: string };
export type MessageWithMetadata = Message & { metadata: Metadata };
type Handler = (
message: MessageWithMetadata,
@@ -42,6 +44,7 @@ export class Messenger {
constructor(private channel: Channel) {
this.channel.messages$
.pipe(
filter((message) => message?.metadata?.SENDER === SENDER),
concatMap(async (message) => {
if (this.handler === undefined) {
return;
@@ -57,10 +60,10 @@ export class Messenger {
return;
}
const metadata: Metadata = { requestId: message.metadata.requestId };
const metadata: Metadata = { SENDER, requestId: message.metadata.requestId };
this.channel.postMessage({ ...handlerResponse, metadata });
} catch (error) {
const metadata: Metadata = { requestId: message.metadata.requestId };
const metadata: Metadata = { SENDER, requestId: message.metadata.requestId };
this.channel.postMessage({
type: MessageType.ErrorResponse,
metadata,
@@ -84,7 +87,7 @@ export class Messenger {
async request(request: Message, abortController?: AbortController): Promise<Message> {
const requestId = Date.now().toString();
const metadata: Metadata = { requestId };
const metadata: Metadata = { SENDER, requestId };
const promise = firstValueFrom(
this.channel.messages$.pipe(
@@ -96,7 +99,7 @@ export class Messenger {
const abortListener = () =>
this.channel.postMessage({
metadata: { requestId: `${requestId}-abort` },
metadata: { SENDER, requestId: `${requestId}-abort` },
type: MessageType.AbortRequest,
abortedRequestId: requestId,
});