Improve receiver status handling

This commit is contained in:
hensm
2021-04-27 08:14:02 +01:00
parent dcd6caf1b2
commit c6270289f7
3 changed files with 67 additions and 40 deletions

View File

@@ -1,22 +1,23 @@
"use strict";
export interface ReceiverStatus {
volume: {
muted: boolean;
stepInterval: number;
controlType: string;
level: number;
};
applications?: Array<{
displayName: string;
statusText: string;
transportId: string;
isIdleScreen: boolean;
sessionId: string;
namespaces: Array<{ name: string }>;
appId: string;
}>;
userEq?: {};
applications?: Array<{
appId: string
, appType: string
, displayName: string
, iconUrl: string
, isIdleScreen: boolean
, launchedFromCloud: boolean
, namespaces: Array<{ name: string }>
, sessionId: string
, statusText: string
, transportId: string
, universalAppId: string
}>
, isActiveInput: boolean
, isStandBy: boolean
, userEq: unknown
, volume: Volume
}
export interface MediaStatus {
@@ -84,3 +85,20 @@ export interface Receiver {
port: number;
status?: ReceiverStatus;
}
export enum VolumeControlType {
ATTENUATION = "attenuation"
, FIXED = "fixed"
, MASTER = "master"
}
export class Volume {
public controlType?: VolumeControlType;
public stepInterval?: number;
constructor(
public level: (number | null) = null
, public muted: (boolean | null) = null) {}
}

View File

@@ -80,21 +80,19 @@ export default class Session {
}
case "shim:session/updateStatus": {
const volume: Volume = message.data.volume;
const status = message.data;
if (volume) {
if (status.volume) {
if (!this.receiver.volume) {
const receiverVolume = new Volume(
volume.level
, volume.muted);
status.volume.level, status.volume.muted);
receiverVolume.controlType = volume.controlType;
receiverVolume.stepInterval = volume.stepInterval;
this.receiver.volume = receiverVolume;
receiverVolume.controlType = status.volume.controlType;
receiverVolume.stepInterval =
status.volume.stepInterval;
} else {
this.receiver.volume.level = volume.level;
this.receiver.volume.muted = volume.muted;
this.receiver.volume.level = status.volume.level;
this.receiver.volume.muted = status.volume.muted;
}
}

View File

@@ -1,21 +1,32 @@
"use strict";
import { Volume } from "./shim/cast/dataClasses";
export interface Receiver {
host: string;
friendlyName: string;
id: string;
port: number;
status?: ReceiverStatus;
host: string
friendlyName: string
, id: string
, port: number
, status?: ReceiverStatus
}
export interface ReceiverStatus {
application: {
displayName: string;
isIdleScreen: boolean;
statusText: string;
};
volume: {
level: number;
muted: boolean
};
applications?: Array<{
appId: string
, appType: string
, displayName: string
, iconUrl: string
, isIdleScreen: boolean
, launchedFromCloud: boolean
, namespaces: Array<{ name: string }>
, sessionId: string
, statusText: string
, transportId: string
, universalAppId: string
}>
, isActiveInput: boolean
, isStandBy: boolean
, userEq: unknown
, volume: Volume
}