Store/disconnect media extension message listener

This commit is contained in:
hensm
2020-02-21 14:27:59 +00:00
parent e4cc88ec1e
commit 1c8d87ebd3

View File

@@ -40,38 +40,7 @@ export default class Media {
#sendMediaMessageCallbacks = new Map<string, Callbacks>(); #sendMediaMessageCallbacks = new Map<string, Callbacks>();
#lastCurrentTime?: number; #lastCurrentTime?: number;
public activeTrackIds: (number[] | null) = null; #listener = onMessage(message => {
public currentItemId: (number | null) = null;
public customData: any = null;
public currentTime: number = 0;
public idleReason: (string | null) = null;
public items: (QueueItem[] | null) = null;
public loadingItemId: (number | null) = null;
public media: (MediaInfo | null) = null;
public playbackRate: number = 1;
public playerState: string = PlayerState.IDLE;
public preloadedItemId: (number | null) = null;
public repeatMode: string = RepeatMode.OFF;
public supportedMediaCommands: string[] = [];
public volume: Volume = new Volume();
constructor (
public sessionId: string
, public mediaSessionId: number
, _internalSessionId: string) {
sendMessageResponse({
subject: "bridge:/media/initialize"
, data: {
sessionId
, mediaSessionId
, _internalSessionId
}
, _id: this.#id
});
onMessage(message => {
if ((message as any)._id !== this.#id) { if ((message as any)._id !== this.#id) {
return; return;
} }
@@ -125,6 +94,37 @@ export default class Media {
} }
}); });
public activeTrackIds: (number[] | null) = null;
public currentItemId: (number | null) = null;
public customData: any = null;
public currentTime: number = 0;
public idleReason: (string | null) = null;
public items: (QueueItem[] | null) = null;
public loadingItemId: (number | null) = null;
public media: (MediaInfo | null) = null;
public playbackRate: number = 1;
public playerState: string = PlayerState.IDLE;
public preloadedItemId: (number | null) = null;
public repeatMode: string = RepeatMode.OFF;
public supportedMediaCommands: string[] = [];
public volume: Volume = new Volume();
constructor (
public sessionId: string
, public mediaSessionId: number
, _internalSessionId: string) {
sendMessageResponse({
subject: "bridge:/media/initialize"
, data: {
sessionId
, mediaSessionId
, _internalSessionId
}
, _id: this.#id
});
} }
public addUpdateListener (listener: UpdateListener): void { public addUpdateListener (listener: UpdateListener): void {
@@ -279,6 +279,8 @@ export default class Media {
{ type: "STOP" } { type: "STOP" }
, () => { , () => {
this.#isActive = false; this.#isActive = false;
this.#listener.disconnect();
if (successCallback) { if (successCallback) {
successCallback(); successCallback();
} }