blob: 2aefa1d9c73380f57c754c1af8dfc22e21cb2b79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import type { AnyMessage, RequestMessage, ShareMessage } from "./messages";
export type HandlerFn<Message> = (message: Message) => void;
export type MessageHandler<Messages extends AnyMessage> = {
[M in Messages as M["event_name"]]?: HandlerFn<M>;
};
export type RequestMessageHandler = MessageHandler<RequestMessage>;
export type ShareMessageHandler = MessageHandler<ShareMessage>;
const defaultHandlerFn: HandlerFn<AnyMessage> = m => {
console.error(
`Received unknown event "${m.event_name}": ${JSON.stringify(m)}`
);
};
export function routeEventToHandler(
event: string,
message: any,
handlers: MessageHandler<AnyMessage>
): void {
const handler = handlers[event] || defaultHandlerFn;
handler(message);
}
|