mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-10 17:49:58 +00:00
Add typed messaging
This commit is contained in:
@@ -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, [
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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)!
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
"use strict";
|
||||
|
||||
import { loadScript } from "../lib/utils";
|
||||
import { Message } from "../types";
|
||||
import { onMessageResponse, sendMessage } from "./eventMessageChannel";
|
||||
|
||||
import messaging, { Message } from "../lib/messaging";
|
||||
|
||||
|
||||
const { isFramework }
|
||||
: { isFramework: boolean } = (window as any);
|
||||
@@ -18,7 +19,7 @@ if (isFramework) {
|
||||
|
||||
|
||||
// Message port to background script
|
||||
export const backgroundPort = browser.runtime.connect({ name: "shim" });
|
||||
export const backgroundPort = messaging.connect({ name: "shim" });
|
||||
|
||||
const forwardToShim = (message: Message) => sendMessage(message);
|
||||
const forwardToMain = (message: Message) => backgroundPort.postMessage(message);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
import { Message } from "../types";
|
||||
import { Message } from "../lib/messaging";
|
||||
|
||||
|
||||
type ListenerFunc = (message: Message) => void;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
"use strict";
|
||||
|
||||
import * as cast from "./cast";
|
||||
import { Message } from "../lib/messaging";
|
||||
|
||||
import { BridgeInfo } from "../lib/bridge";
|
||||
import { Message } from "../types";
|
||||
|
||||
import { onMessage
|
||||
, onMessageResponse
|
||||
|
||||
Reference in New Issue
Block a user