mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 08:39:59 +00:00
Default to native receiver selector on macOS
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user