Refactor session impl messages

This commit is contained in:
hensm
2021-04-28 10:57:05 +01:00
parent aa67af0be7
commit a489b3951e
6 changed files with 130 additions and 263 deletions

View File

@@ -130,6 +130,22 @@ export default class Session {
this.close();
break;
case "bridge:session/sendReceiverMessage": {
let wasError = false;
try {
this.clientReceiver?.send(message.data.message);
} catch (err) {
wasError = true;
}
this.sendMessage("shim:session/sendReceiverMessageResponse", {
messageId: message.data.messageId
, wasError
});
break;
}
case "bridge:session/impl_addMessageListener":
this._impl_addMessageListener(message.data.namespace);
break;
@@ -140,22 +156,6 @@ export default class Session {
, message.data.message
, message.data.messageId);
break;
case "bridge:session/impl_setReceiverMuted":
this._impl_setReceiverMuted(
message.data.muted
, message.data.volumeId);
break;
case "bridge:session/impl_setReceiverVolumeLevel":
this._impl_setReceiverVolumeLevel(
message.data.newLevel
, message.data.volumeId);
break;
case "bridge:session/impl_stop":
this._impl_stop(message.data.stopId);
break;
}
}
@@ -209,7 +209,7 @@ export default class Session {
}
this.createChannel(namespace);
this.channelMap.get(namespace)!.send(message);
this.channelMap.get(namespace)?.send(message);
} catch (err) {
error = true;
}
@@ -220,66 +220,4 @@ export default class Session {
});
}
private _impl_setReceiverMuted(muted: boolean, volumeId: string) {
let error = false;
try {
this.clientReceiver!.send({
type: "SET_VOLUME"
, volume: { muted }
, requestId: 0
});
} catch (err) {
error = true;
}
this.sendMessage("shim:session/impl_setReceiverMuted", {
volumeId
, error
});
}
private _impl_setReceiverVolumeLevel(newLevel: number, volumeId: string) {
let error = false;
try {
this.clientReceiver!.send({
type: "SET_VOLUME"
, volume: { level: newLevel }
, requestId: 0
});
} catch (err) {
error = true;
}
this.sendMessage("shim:session/impl_setReceiverVolumeLevel", {
volumeId
, error
});
}
private _impl_stop(stopId: string) {
let error = false;
try {
this.clientReceiver!.send({
type: "STOP"
, sessionId: this.sessionId
, requestId: 0
});
} catch (err) {
error = true;
}
this.client.close();
clearInterval(this.clientHeartbeatIntervalId!);
this.sendMessage("shim:session/impl_stop", {
stopId
, error
});
}
}

View File

@@ -1,9 +1,11 @@
"use strict";
import { ReceiverDevice
, ReceiverMessage
, ReceiverSelectionCast
, ReceiverSelectionStop
, ReceiverStatus } from "./types";
, ReceiverStatus
, Volume } from "./types";
type MessageDefinitions = {
@@ -15,7 +17,11 @@ type MessageDefinitions = {
, displayName: string
, statusText: string
}
, "shim:session/updateStatus": { volume: any /* Volume */ }
, "shim:session/updateStatus": { volume: Volume }
, "shim:session/sendReceiverMessageResponse": {
messageId: string
, wasError: boolean
}
, "shim:session/impl_addMessageListener": {
namespace: string
, data: string
@@ -24,18 +30,6 @@ type MessageDefinitions = {
messageId: string
, error: boolean
}
, "shim:session/impl_setReceiverMuted": {
volumeId: string
, error: boolean
}
, "shim:session/impl_setReceiverVolumeLevel": {
volumeId: string
, error: boolean
}
, "shim:session/impl_stop": {
stopId: string
, error: boolean
}
// Bridge session messages
, "bridge:session/initialize": {
@@ -46,6 +40,11 @@ type MessageDefinitions = {
, _id: string
}
, "bridge:session/close": {}
, "bridge:session/sendReceiverMessage": {
message: ReceiverMessage
, messageId: string
, _id: string
}
, "bridge:session/impl_leave": {
id: string
, _id: string
@@ -56,20 +55,6 @@ type MessageDefinitions = {
, messageId: string
, _id: string
}
, "bridge:session/impl_setReceiverMuted": {
muted: boolean
, volumeId: string
, _id: string
}
, "bridge:session/impl_setReceiverVolumeLevel": {
newLevel: number
, volumeId: string
, _id: string
}
, "bridge:session/impl_stop": {
stopId: string;
_id: string;
}
, "bridge:session/impl_addMessageListener": {
namespace: string;
_id: string;

View File

@@ -20,6 +20,7 @@ export interface ReceiverStatus {
, volume: Volume
}
export interface MediaStatus {
mediaSessionId: number;
supportedMediaCommands: number;
@@ -102,3 +103,15 @@ export class Volume {
public level: (number | null) = null
, public muted: (boolean | null) = null) {}
}
export type ReceiverMessage =
{ type: "LAUNCH", appId: string }
| { type: "STOP", sessionId: string }
| { type: "GET_STATUS" }
| { type: "GET_APP_AVAILABILITY", appId: string[] }
| {
type: "SET_VOLUME"
, volume: { level: number }
| { muted: boolean }
};