mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-09 09:09:58 +00:00
Improve receiver status handling
This commit is contained in:
@@ -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) {}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user