mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 02:29: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 { getChromeUserAgent } from "./lib/userAgents";
|
||||||
import { getWindowCenteredProps } from "./lib/utils";
|
import { getWindowCenteredProps } from "./lib/utils";
|
||||||
|
|
||||||
import { ReceiverSelectorMediaType
|
import { getReceiverSelectorManager
|
||||||
, ReceiverSelectorSelectedEvent
|
, ReceiverSelectorManagerType
|
||||||
, PopupReceiverSelectorManager
|
, ReceiverSelectorMediaType
|
||||||
, NativeMacReceiverSelectorManager } from "./receiverSelectorManager";
|
, ReceiverSelectorSelectedEvent } from "./receiverSelectorManager";
|
||||||
|
|
||||||
import { Message, Receiver } from "./types";
|
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 tabId = port.sender.tab.id;
|
||||||
const frameId = port.sender.frameId;
|
const frameId = port.sender.frameId;
|
||||||
const shimId = `${tabId}:${frameId}`;
|
const shimId = `${tabId}:${frameId}`;
|
||||||
@@ -510,16 +517,16 @@ async function onConnectShim (port: browser.runtime.Port) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "main:/sessionCreated": {
|
case "main:/sessionCreated": {
|
||||||
PopupReceiverSelectorManager.close();
|
receiverSelectorManager.close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "main:/selectReceiverBegin": {
|
case "main:/selectReceiverBegin": {
|
||||||
PopupReceiverSelectorManager.open(
|
receiverSelectorManager.open(
|
||||||
Array.from(statusBridgeReceivers.values())
|
Array.from(statusBridgeReceivers.values())
|
||||||
, message.data.defaultMediaType);
|
, message.data.defaultMediaType);
|
||||||
|
|
||||||
PopupReceiverSelectorManager.addEventListener("selected"
|
receiverSelectorManager.addEventListener("selected"
|
||||||
, (ev: ReceiverSelectorSelectedEvent) => {
|
, (ev: ReceiverSelectorSelectedEvent) => {
|
||||||
|
|
||||||
port.postMessage({
|
port.postMessage({
|
||||||
@@ -530,13 +537,13 @@ async function onConnectShim (port: browser.runtime.Port) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
PopupReceiverSelectorManager.addEventListener("cancelled", () => {
|
receiverSelectorManager.addEventListener("cancelled", () => {
|
||||||
port.postMessage({
|
port.postMessage({
|
||||||
subject: "shim:/selectReceiverCancelled"
|
subject: "shim:/selectReceiverCancelled"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
PopupReceiverSelectorManager.addEventListener("error", () => {
|
receiverSelectorManager.addEventListener("error", () => {
|
||||||
// TODO: Report errors properly
|
// TODO: Report errors properly
|
||||||
port.postMessage({
|
port.postMessage({
|
||||||
subject: "shim:/selectReceiverCancelled"
|
subject: "shim:/selectReceiverCancelled"
|
||||||
|
|||||||
@@ -1,13 +1,32 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
import NativeMacReceiverSelectorManager
|
||||||
|
from "./selectorManagers/NativeMacReceiverSelectorManager";
|
||||||
|
import PopupReceiverSelectorManager
|
||||||
|
from "./selectorManagers/PopupReceiverSelectorManager";
|
||||||
|
|
||||||
|
|
||||||
export { ReceiverSelection
|
export { ReceiverSelection
|
||||||
, ReceiverSelectorCancelledEvent
|
, ReceiverSelectorCancelledEvent
|
||||||
, ReceiverSelectorErrorEvent
|
, ReceiverSelectorErrorEvent
|
||||||
, ReceiverSelectorMediaType
|
, ReceiverSelectorMediaType
|
||||||
, ReceiverSelectorSelectedEvent } from "./ReceiverSelectorManager";
|
, ReceiverSelectorSelectedEvent } from "./ReceiverSelectorManager";
|
||||||
|
|
||||||
export { default as NativeMacReceiverSelectorManager }
|
|
||||||
from "./selectorManagers/NativeMacReceiverSelectorManager";
|
|
||||||
|
|
||||||
export { default as PopupReceiverSelectorManager }
|
export enum ReceiverSelectorManagerType {
|
||||||
from "./selectorManagers/PopupReceiverSelectorManager";
|
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