Fix receiver selector manager event listeners

This commit is contained in:
hensm
2019-05-02 05:50:56 +01:00
committed by Matt Hensman
parent 418679f7de
commit a25b418917
4 changed files with 44 additions and 35 deletions

View File

@@ -590,6 +590,46 @@ async function onConnectShim (port: browser.runtime.Port) {
? ReceiverSelectorManagerType.NativeMac ? ReceiverSelectorManagerType.NativeMac
: ReceiverSelectorManagerType.Popup); : 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 tabId = port.sender.tab.id;
const frameId = port.sender.frameId; const frameId = port.sender.frameId;
@@ -668,31 +708,6 @@ async function onConnectShim (port: browser.runtime.Port) {
receiverSelectorManager.open( receiverSelectorManager.open(
Array.from(statusBridgeReceivers.values()) Array.from(statusBridgeReceivers.values())
, message.data.defaultMediaType); , 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; break;
} }

View File

@@ -23,10 +23,10 @@ export function getReceiverSelectorManager (
switch (type) { switch (type) {
case ReceiverSelectorManagerType.Popup: { case ReceiverSelectorManagerType.Popup: {
return PopupReceiverSelectorManager; return new PopupReceiverSelectorManager();
} }
case ReceiverSelectorManagerType.NativeMac: { case ReceiverSelectorManagerType.NativeMac: {
return NativeMacReceiverSelectorManager; return new NativeMacReceiverSelectorManager();
} }
} }
} }

View File

@@ -13,7 +13,7 @@ import { NativeReceiverSelectorCloseMessage
const _ = browser.i18n.getMessage; const _ = browser.i18n.getMessage;
class NativeMacReceiverSelectorManager export default class NativeMacReceiverSelectorManager
extends EventTarget extends EventTarget
implements ReceiverSelectorManager { implements ReceiverSelectorManager {
@@ -105,6 +105,3 @@ class NativeMacReceiverSelectorManager
this.wasReceiverSelected = false; this.wasReceiverSelected = false;
} }
} }
// Singleton instance
export default new NativeMacReceiverSelectorManager();

View File

@@ -7,7 +7,7 @@ import { getWindowCenteredProps } from "../../lib/utils";
import { Message, Receiver } from "../../types"; import { Message, Receiver } from "../../types";
class PopupReceiverSelectorManager export default class PopupReceiverSelectorManager
extends EventTarget extends EventTarget
implements ReceiverSelectorManager { implements ReceiverSelectorManager {
@@ -158,6 +158,3 @@ class PopupReceiverSelectorManager
} }
} }
} }
// Singleton instance
export default new PopupReceiverSelectorManager();