mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-10 17:49:58 +00:00
Store/disconnect media extension message listener
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user