Types src/content
This commit is contained in:
parent
992b3ac65d
commit
d01db82c0d
62 changed files with 1411 additions and 468 deletions
32
src/content/MessageListener.ts
Normal file
32
src/content/MessageListener.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
import { Message, valueOf } from '../shared/messages';
|
||||
|
||||
export type WebMessageSender = Window | MessagePort | ServiceWorker | null;
|
||||
export type WebExtMessageSender = browser.runtime.MessageSender;
|
||||
|
||||
export default class MessageListener {
|
||||
onWebMessage(
|
||||
listener: (msg: Message, sender: WebMessageSender) => void,
|
||||
) {
|
||||
window.addEventListener('message', (event: MessageEvent) => {
|
||||
let sender = event.source;
|
||||
let message = null;
|
||||
try {
|
||||
message = JSON.parse(event.data);
|
||||
} catch (e) {
|
||||
// ignore unexpected message
|
||||
return;
|
||||
}
|
||||
listener(message, sender);
|
||||
});
|
||||
}
|
||||
|
||||
onBackgroundMessage(
|
||||
listener: (msg: Message, sender: WebExtMessageSender) => any,
|
||||
) {
|
||||
browser.runtime.onMessage.addListener(
|
||||
(msg: any, sender: WebExtMessageSender) => {
|
||||
listener(valueOf(msg), sender);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
Reference in a new issue