diff --git a/src/components/maincontroller.ts b/src/components/maincontroller.ts index e269a159..484aa746 100644 --- a/src/components/maincontroller.ts +++ b/src/components/maincontroller.ts @@ -247,7 +247,7 @@ window.playerManager.addEventListener( () => { setTextTrack( window.playerManager.getMediaInformation()?.customData - .subtitleStreamIndex + ?.subtitleStreamIndex ?? null ); } ); @@ -494,7 +494,7 @@ export async function changeStream( params: any = undefined // eslint-disable-line @typescript-eslint/no-explicit-any ): Promise { if ( - window.playerManager.getMediaInformation()?.customData.canClientSeek && + window.playerManager.getMediaInformation()?.customData?.canClientSeek && params == null ) { window.playerManager.seek(ticksToSeconds(ticks)); @@ -847,7 +847,6 @@ export function createMediaInformation( mediaInfo.contentId = streamInfo.url; mediaInfo.contentType = streamInfo.contentType; - // TODO make a type for this mediaInfo.customData = { audioStreamIndex: streamInfo.audioStreamIndex, canClientSeek: streamInfo.canClientSeek, diff --git a/src/helpers.ts b/src/helpers.ts index f6dfca0d..9003e704 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -22,7 +22,7 @@ export function getCurrentPositionTicks(state: PlaybackState): number { window.playerManager.getCurrentTimeSec() * TicksPerSecond; const mediaInformation = window.playerManager.getMediaInformation(); - if (mediaInformation && !mediaInformation.customData.canClientSeek) { + if (mediaInformation && !mediaInformation.customData?.canClientSeek) { positionTicks += state.startPositionTicks || 0; } diff --git a/src/types/global.d.ts b/src/types/global.d.ts index 9268c09c..08239a1d 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -103,3 +103,19 @@ declare global { volume: SystemVolumeData; } } + +declare module 'chromecast-caf-receiver/cast.framework.messages' { + interface MediaInformationCustomData { + audioStreamIndex: string; + canClientSeek: boolean; + canSeek: boolean; + itemId: string | undefined; + liveStreamId: number; + mediaSourceId: number; + playMethod: 'DirectStream' | 'Transcode'; + playSessionId: string; + runtimeTicks: number; + startPositionTicks: number; + subtitleStreamIndex: number; + } +}