From 95d9d846c5038cd5563950a1ff0412047f8a98ea Mon Sep 17 00:00:00 2001 From: hensm Date: Thu, 2 May 2019 01:03:59 +0100 Subject: [PATCH] Default to native receiver selector on macOS --- ext/src/main.ts | 25 ++++++++++++++-------- ext/src/receiverSelectorManager/index.ts | 27 ++++++++++++++++++++---- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/ext/src/main.ts b/ext/src/main.ts index 0be8fa2..74136e6 100755 --- a/ext/src/main.ts +++ b/ext/src/main.ts @@ -7,10 +7,10 @@ import messageRouter from "./lib/messageRouter"; import { getChromeUserAgent } from "./lib/userAgents"; import { getWindowCenteredProps } from "./lib/utils"; -import { ReceiverSelectorMediaType - , ReceiverSelectorSelectedEvent - , PopupReceiverSelectorManager - , NativeMacReceiverSelectorManager } from "./receiverSelectorManager"; +import { getReceiverSelectorManager + , ReceiverSelectorManagerType + , ReceiverSelectorMediaType + , ReceiverSelectorSelectedEvent } from "./receiverSelectorManager"; import { Message, Receiver } from "./types"; @@ -441,6 +441,13 @@ async function onConnectShim (port: browser.runtime.Port) { } + const { os } = await browser.runtime.getPlatformInfo(); + + const receiverSelectorManager = getReceiverSelectorManager(os === "mac" + ? ReceiverSelectorManagerType.NativeMac + : ReceiverSelectorManagerType.Popup); + + const tabId = port.sender.tab.id; const frameId = port.sender.frameId; const shimId = `${tabId}:${frameId}`; @@ -510,16 +517,16 @@ async function onConnectShim (port: browser.runtime.Port) { } case "main:/sessionCreated": { - PopupReceiverSelectorManager.close(); + receiverSelectorManager.close(); break; } case "main:/selectReceiverBegin": { - PopupReceiverSelectorManager.open( + receiverSelectorManager.open( Array.from(statusBridgeReceivers.values()) , message.data.defaultMediaType); - PopupReceiverSelectorManager.addEventListener("selected" + receiverSelectorManager.addEventListener("selected" , (ev: ReceiverSelectorSelectedEvent) => { port.postMessage({ @@ -530,13 +537,13 @@ async function onConnectShim (port: browser.runtime.Port) { }); }); - PopupReceiverSelectorManager.addEventListener("cancelled", () => { + receiverSelectorManager.addEventListener("cancelled", () => { port.postMessage({ subject: "shim:/selectReceiverCancelled" }); }); - PopupReceiverSelectorManager.addEventListener("error", () => { + receiverSelectorManager.addEventListener("error", () => { // TODO: Report errors properly port.postMessage({ subject: "shim:/selectReceiverCancelled" diff --git a/ext/src/receiverSelectorManager/index.ts b/ext/src/receiverSelectorManager/index.ts index 1b19309..6a6a12d 100644 --- a/ext/src/receiverSelectorManager/index.ts +++ b/ext/src/receiverSelectorManager/index.ts @@ -1,13 +1,32 @@ "use strict"; +import NativeMacReceiverSelectorManager + from "./selectorManagers/NativeMacReceiverSelectorManager"; +import PopupReceiverSelectorManager + from "./selectorManagers/PopupReceiverSelectorManager"; + + export { ReceiverSelection , ReceiverSelectorCancelledEvent , ReceiverSelectorErrorEvent , ReceiverSelectorMediaType , ReceiverSelectorSelectedEvent } from "./ReceiverSelectorManager"; -export { default as NativeMacReceiverSelectorManager } - from "./selectorManagers/NativeMacReceiverSelectorManager"; -export { default as PopupReceiverSelectorManager } - from "./selectorManagers/PopupReceiverSelectorManager"; +export enum ReceiverSelectorManagerType { + Popup + , NativeMac +} + +export function getReceiverSelectorManager( + type: ReceiverSelectorManagerType) { + + switch (type) { + case ReceiverSelectorManagerType.Popup: { + return PopupReceiverSelectorManager; + } + case ReceiverSelectorManagerType.NativeMac: { + return NativeMacReceiverSelectorManager; + } + } +}