mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-10 17:49:58 +00:00
Replace StatusManager
This commit is contained in:
@@ -4,7 +4,7 @@ import castv2 from "castv2";
|
||||
|
||||
import Session, { NS_CONNECTION, NS_RECEIVER } from "./Session";
|
||||
import Media from "./Media";
|
||||
import { Receiver } from "../../types";
|
||||
import { ReceiverDevice } from "../../types";
|
||||
|
||||
|
||||
// Existing counterpart Media/Session objects
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
|
||||
import mdns from "mdns";
|
||||
|
||||
import StatusListener from "./chromecast/StatusListener";
|
||||
import { ReceiverStatus } from "../types";
|
||||
import { sendMessage } from "../lib/nativeMessaging";
|
||||
|
||||
import { ReceiverStatus } from "../types";
|
||||
import { Message } from "../messaging";
|
||||
|
||||
import StatusListener from "./chromecast/StatusListener";
|
||||
|
||||
|
||||
interface CastTxtRecord {
|
||||
id: string; cd: string; rm: string;
|
||||
@@ -34,12 +37,14 @@ function onBrowserServiceUp(service: mdns.Service) {
|
||||
const txtRecord = service.txtRecord as CastTxtRecord;
|
||||
|
||||
sendMessage({
|
||||
subject: "main:serviceUp"
|
||||
subject: "main:receiverDeviceUp"
|
||||
, data: {
|
||||
host: service.addresses[0]
|
||||
, port: service.port
|
||||
, id: txtRecord.id
|
||||
, friendlyName: txtRecord.fn
|
||||
receiverDevice: {
|
||||
host: service.addresses[0]
|
||||
, port: service.port
|
||||
, id: txtRecord.id
|
||||
, friendlyName: txtRecord.fn
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -72,41 +77,20 @@ export function startDiscovery(options: InitializeOptions) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { id } = service.txtRecord;
|
||||
|
||||
const listener = new StatusListener(
|
||||
service.addresses[0]
|
||||
, service.port);
|
||||
service.addresses[0], service.port);
|
||||
|
||||
listener.on("receiverStatus", (status: ReceiverStatus) => {
|
||||
const receiverStatusMessage: any = {
|
||||
subject: "main:updateReceiverStatus"
|
||||
sendMessage({
|
||||
subject: "main:receiverDeviceUpdated"
|
||||
, data: {
|
||||
id
|
||||
, status: {
|
||||
volume: {
|
||||
level: status.volume.level
|
||||
, muted: status.volume.muted
|
||||
}
|
||||
}
|
||||
receiverDeviceId: service.txtRecord.id
|
||||
, status
|
||||
}
|
||||
};
|
||||
|
||||
if (status.applications && status.applications.length) {
|
||||
const application = status.applications[0];
|
||||
|
||||
receiverStatusMessage.data.status.application = {
|
||||
appId: application.appId
|
||||
, displayName: application.displayName
|
||||
, isIdleScreen: application.isIdleScreen
|
||||
, statusText: application.statusText
|
||||
};
|
||||
}
|
||||
|
||||
sendMessage(receiverStatusMessage);
|
||||
});
|
||||
});
|
||||
|
||||
statusListeners.set(id, listener);
|
||||
statusListeners.set(service.txtRecord.id, listener);
|
||||
}
|
||||
|
||||
function onStatusBrowserServiceDown(_service: mdns.Service) {
|
||||
|
||||
@@ -51,8 +51,8 @@ decodeTransform.on("data", (message: Message) => {
|
||||
}
|
||||
|
||||
case "bridge:stopReceiverApp": {
|
||||
const { host, port } = message.data.receiver;
|
||||
stopReceiverApp(host, port);
|
||||
const { receiverDevice } = message.data;
|
||||
stopReceiverApp(receiverDevice.host, receiverDevice.port);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
import { Receiver
|
||||
import { ReceiverDevice
|
||||
, ReceiverSelectionCast
|
||||
, ReceiverSelectionStop
|
||||
, ReceiverStatus } from "./types";
|
||||
@@ -127,7 +127,7 @@ type MessageDefinitions = {
|
||||
, "bridge:openReceiverSelector": string
|
||||
, "bridge:closeReceiverSelector": {}
|
||||
|
||||
, "bridge:stopReceiverApp": { receiver: Receiver }
|
||||
, "bridge:stopReceiverApp": { receiverDevice: ReceiverDevice }
|
||||
|
||||
|
||||
, "bridge:startMediaServer": {
|
||||
@@ -145,13 +145,21 @@ type MessageDefinitions = {
|
||||
, "mediaCast:mediaServerError": {}
|
||||
|
||||
|
||||
, "main:serviceUp": Receiver
|
||||
, "main:serviceUp": ReceiverDevice
|
||||
, "main:serviceDown": { id: string }
|
||||
|
||||
, "main:updateReceiverStatus": {
|
||||
id: string
|
||||
, status: ReceiverStatus
|
||||
}
|
||||
|
||||
|
||||
, "main:receiverDeviceUp": { receiverDevice: ReceiverDevice }
|
||||
, "main:receiverDeviceDown": { receiverDeviceId: string }
|
||||
, "main:receiverDeviceUpdated": {
|
||||
receiverDeviceId: string
|
||||
, status: ReceiverStatus
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ export interface ReceiverStatus {
|
||||
, transportId: string
|
||||
, universalAppId: string
|
||||
}>
|
||||
, isActiveInput: boolean
|
||||
, isStandBy: boolean
|
||||
, isActiveInput?: boolean
|
||||
, isStandBy?: boolean
|
||||
, userEq: unknown
|
||||
, volume: Volume
|
||||
}
|
||||
@@ -68,17 +68,17 @@ export enum ReceiverSelectionActionType {
|
||||
|
||||
export interface ReceiverSelectionCast {
|
||||
actionType: ReceiverSelectionActionType.Cast;
|
||||
receiver: Receiver;
|
||||
receiver: ReceiverDevice;
|
||||
mediaType: ReceiverSelectorMediaType;
|
||||
filePath?: string;
|
||||
}
|
||||
|
||||
export interface ReceiverSelectionStop {
|
||||
actionType: ReceiverSelectionActionType.Stop;
|
||||
receiver: Receiver;
|
||||
receiver: ReceiverDevice;
|
||||
}
|
||||
|
||||
export interface Receiver {
|
||||
export interface ReceiverDevice {
|
||||
host: string;
|
||||
friendlyName: string;
|
||||
id: string;
|
||||
|
||||
Reference in New Issue
Block a user