Add typed messaging

This commit is contained in:
hensm
2020-02-18 07:37:20 +00:00
parent 652fd21f77
commit 2eeaff4c15
19 changed files with 431 additions and 227 deletions

View File

@@ -49,7 +49,7 @@ const _stopCallbacks = new WeakMap<Session, CallbacksMap>();
export default class Session {
public media: Media[];
public namespaces: Array<{ name: "string" }>;
public namespaces: Array<{ name: string }>;
public senderApps: SenderApplication[];
public status: SessionStatus;
public statusText: string | null;
@@ -91,13 +91,14 @@ export default class Session {
, appId
, sessionId
}
, _id: _id.get(this)
, _id: _id.get(this)!
});
}
const listenerObject = onMessage(message => {
// Filter other session messages
if (message._id && message._id !== _id.get(this)) {
if ((message as any)._id
&& (message as any)._id !== _id.get(this)) {
return;
}
@@ -164,9 +165,7 @@ export default class Session {
case "shim:/session/impl_addMessageListener": {
const { namespace, data }
: { namespace: string, data: string } = message.data;
const { namespace, data } = message.data;
const messageListeners = _messageListeners
.get(this)?.get(namespace);
@@ -180,9 +179,7 @@ export default class Session {
}
case "shim:/session/impl_sendMessage": {
const { messageId, error }
: { messageId: string, error: boolean } = message.data;
const { messageId, error } = message.data;
const [ successCallback, errorCallback ] =
_sendMessageCallbacks
.get(this)?.get(messageId) ?? [];
@@ -286,7 +283,7 @@ export default class Session {
sendMessageResponse({
subject: "bridge:/session/impl_addMessageListener"
, data: { namespace }
, _id: _id.get(this)
, _id: _id.get(this)!
});
}
@@ -303,7 +300,7 @@ export default class Session {
sendMessageResponse({
subject: "bridge:/session/impl_leave"
, data: { id }
, _id: _id.get(this)
, _id: _id.get(this)!
});
_leaveCallbacks.get(this)?.set(id, [
@@ -411,7 +408,7 @@ export default class Session {
, message
, messageId
}
, _id: _id.get(this)
, _id: _id.get(this)!
});
_sendMessageCallbacks.get(this)?.set(messageId, [
@@ -430,7 +427,7 @@ export default class Session {
sendMessageResponse({
subject: "bridge:/session/impl_setReceiverMuted"
, data: { muted, volumeId }
, _id: _id.get(this)
, _id: _id.get(this)!
});
_setReceiverMutedCallbacks.get(this)?.set(volumeId, [
@@ -449,7 +446,7 @@ export default class Session {
sendMessageResponse({
subject: "bridge:/session/impl_setReceiverVolumeLevel"
, data: { newLevel, volumeId }
, _id: _id.get(this)
, _id: _id.get(this)!
});
_setReceiverVolumeLevelCallbacks.get(this)?.set(volumeId, [
@@ -467,7 +464,7 @@ export default class Session {
sendMessageResponse({
subject: "bridge:/session/impl_stop"
, data: { stopId }
, _id: _id.get(this)
, _id: _id.get(this)!
});
_stopCallbacks.get(this)?.set(stopId, [

View File

@@ -44,7 +44,7 @@ type ErrorCallback = (err: Error_) => void;
let apiConfig: ApiConfig;
const receiverList: Receiver[] = [];
const receiverList: Array<{ id: string }> = [];
const sessionList: Session[] = [];
const receiverActionListeners = new Set<ReceiverActionListener>();

View File

@@ -76,11 +76,12 @@ export default class Media {
, mediaSessionId
, _internalSessionId
}
, _id: _id.get(this)
, _id: _id.get(this)!
});
onMessage(message => {
if (!message._id || message._id !== _id.get(this)) {
if ((message as any)._id
&& (message as any)._id !== _id.get(this)) {
return;
}
@@ -95,7 +96,7 @@ export default class Media {
this.playerState = status.playerState;
this.repeatMode = status.repeatMode;
if (status.volume) {
if (status._volumeLevel && status._volumeMuted) {
this.volume = new Volume(
status._volumeLevel
, status._volumeMuted);
@@ -120,9 +121,7 @@ export default class Media {
}
case "shim:/media/sendMediaMessageResponse": {
const { messageId, error }
: { messageId: string, error: any } = message.data;
const { messageId, error } = message.data;
const [ successCallback, errorCallback ]
= _sendMediaMessageCallbacks
.get(this)?.get(messageId) ?? [];
@@ -323,7 +322,7 @@ export default class Media {
message
, messageId
}
, _id: _id.get(this)
, _id: _id.get(this)!
});
}
}