Replace StatusManager

This commit is contained in:
hensm
2021-04-28 06:21:50 +01:00
parent c1172410f9
commit f44d142631
22 changed files with 295 additions and 286 deletions

View File

@@ -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

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -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
}
}

View File

@@ -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;