Fix longstanding architectural issues

This commit is contained in:
hensm
2022-09-01 02:14:00 +01:00
committed by Matt Hensman
parent 83c81219d7
commit 7a35da2ba1
30 changed files with 1274 additions and 1282 deletions

View File

@@ -1,30 +1,19 @@
"use strict";
import messaging, { Message } from "../messaging";
import { PageEventMessenger, ExtensionEventMessenger } from "./eventMessaging";
// Create messengers manually instead of relying on getters
const eventMessaging = {
page: new PageEventMessenger(),
extension: new ExtensionEventMessenger()
};
import pageMessenging from "./pageMessenging";
// Message port to background script
export const backgroundPort = messaging.connect({ name: "cast" });
export const managerPort = messaging.connect({ name: "cast" });
const forwardToPage = (message: Message) => {
eventMessaging.extension.sendMessage(message);
pageMessenging.extension.sendMessage(message);
};
const forwardToMain = (message: Message) => {
backgroundPort.postMessage(message);
managerPort.postMessage(message);
};
// Add message listeners
backgroundPort.onMessage.addListener(forwardToPage);
eventMessaging.extension.addListener(forwardToMain);
managerPort.onMessage.addListener(forwardToPage);
pageMessenging.extension.addListener(forwardToMain);
// Remove listeners
backgroundPort.onDisconnect.addListener(() => {
backgroundPort.onMessage.removeListener(forwardToPage);
eventMessaging.extension.addListener(forwardToMain);
managerPort.onDisconnect.addListener(() => {
pageMessenging.extension.close();
});