From a25b4189175caf6496eb9496b622bb3f3e024313 Mon Sep 17 00:00:00 2001 From: hensm Date: Thu, 2 May 2019 05:50:56 +0100 Subject: [PATCH] Fix receiver selector manager event listeners --- ext/src/main.ts | 65 ++++++++++++------- ext/src/receiverSelectorManager/index.ts | 4 +- .../NativeMacReceiverSelectorManager.ts | 5 +- .../PopupReceiverSelectorManager.ts | 5 +- 4 files changed, 44 insertions(+), 35 deletions(-) diff --git a/ext/src/main.ts b/ext/src/main.ts index f07186a..826274a 100755 --- a/ext/src/main.ts +++ b/ext/src/main.ts @@ -590,6 +590,46 @@ async function onConnectShim (port: browser.runtime.Port) { ? ReceiverSelectorManagerType.NativeMac : ReceiverSelectorManagerType.Popup); + function onReceiverSelectorManagerSelected ( + ev: ReceiverSelectorSelectedEvent) { + + port.postMessage({ + subject: "shim:/selectReceiverEnd" + , data: { + receiver: ev.detail.receiver + } + }); + } + + function onReceiverSelectorManagerCancelled () { + port.postMessage({ + subject: "shim:/selectReceiverCancelled" + }); + } + + function onReceiverSelectorManagerError () { + // TODO: Report errors properly + port.postMessage({ + subject: "shim:/selectReceiverCancelled" + }); + } + + receiverSelectorManager.addEventListener("selected" + , onReceiverSelectorManagerSelected); + receiverSelectorManager.addEventListener("cancelled" + , onReceiverSelectorManagerCancelled); + receiverSelectorManager.addEventListener("error" + , onReceiverSelectorManagerError); + + port.onDisconnect.addListener(() => { + receiverSelectorManager.removeEventListener("selected" + , onReceiverSelectorManagerSelected); + receiverSelectorManager.removeEventListener("cancelled" + , onReceiverSelectorManagerCancelled); + receiverSelectorManager.removeEventListener("error" + , onReceiverSelectorManagerError); + }); + const tabId = port.sender.tab.id; const frameId = port.sender.frameId; @@ -668,31 +708,6 @@ async function onConnectShim (port: browser.runtime.Port) { receiverSelectorManager.open( Array.from(statusBridgeReceivers.values()) , message.data.defaultMediaType); - - receiverSelectorManager.addEventListener("selected" - , (ev: ReceiverSelectorSelectedEvent) => { - - port.postMessage({ - subject: "shim:/selectReceiverEnd" - , data: { - receiver: ev.detail.receiver - } - }); - }); - - receiverSelectorManager.addEventListener("cancelled", () => { - port.postMessage({ - subject: "shim:/selectReceiverCancelled" - }); - }); - - receiverSelectorManager.addEventListener("error", () => { - // TODO: Report errors properly - port.postMessage({ - subject: "shim:/selectReceiverCancelled" - }); - }); - break; } diff --git a/ext/src/receiverSelectorManager/index.ts b/ext/src/receiverSelectorManager/index.ts index b929677..e9bc0af 100644 --- a/ext/src/receiverSelectorManager/index.ts +++ b/ext/src/receiverSelectorManager/index.ts @@ -23,10 +23,10 @@ export function getReceiverSelectorManager ( switch (type) { case ReceiverSelectorManagerType.Popup: { - return PopupReceiverSelectorManager; + return new PopupReceiverSelectorManager(); } case ReceiverSelectorManagerType.NativeMac: { - return NativeMacReceiverSelectorManager; + return new NativeMacReceiverSelectorManager(); } } } diff --git a/ext/src/receiverSelectorManager/selectorManagers/NativeMacReceiverSelectorManager.ts b/ext/src/receiverSelectorManager/selectorManagers/NativeMacReceiverSelectorManager.ts index d9e7291..bb8b6c7 100644 --- a/ext/src/receiverSelectorManager/selectorManagers/NativeMacReceiverSelectorManager.ts +++ b/ext/src/receiverSelectorManager/selectorManagers/NativeMacReceiverSelectorManager.ts @@ -13,7 +13,7 @@ import { NativeReceiverSelectorCloseMessage const _ = browser.i18n.getMessage; -class NativeMacReceiverSelectorManager +export default class NativeMacReceiverSelectorManager extends EventTarget implements ReceiverSelectorManager { @@ -105,6 +105,3 @@ class NativeMacReceiverSelectorManager this.wasReceiverSelected = false; } } - -// Singleton instance -export default new NativeMacReceiverSelectorManager(); diff --git a/ext/src/receiverSelectorManager/selectorManagers/PopupReceiverSelectorManager.ts b/ext/src/receiverSelectorManager/selectorManagers/PopupReceiverSelectorManager.ts index 26e6066..ebb132d 100644 --- a/ext/src/receiverSelectorManager/selectorManagers/PopupReceiverSelectorManager.ts +++ b/ext/src/receiverSelectorManager/selectorManagers/PopupReceiverSelectorManager.ts @@ -7,7 +7,7 @@ import { getWindowCenteredProps } from "../../lib/utils"; import { Message, Receiver } from "../../types"; -class PopupReceiverSelectorManager +export default class PopupReceiverSelectorManager extends EventTarget implements ReceiverSelectorManager { @@ -158,6 +158,3 @@ class PopupReceiverSelectorManager } } } - -// Singleton instance -export default new PopupReceiverSelectorManager();