Fix cast build (#17162)

This commit is contained in:
Bram Kragten 2023-07-04 20:41:40 +02:00 committed by GitHub
parent 75b6b9cfd9
commit 7584404d31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 23 deletions

View File

@ -1,21 +1,21 @@
import { cast } from "chromecast-caf-receiver"; import { framework } from "../receiver/cast_framework";
const castContext = cast.framework.CastReceiverContext.getInstance(); const castContext = framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager(); const playerManager = castContext.getPlayerManager();
playerManager.setMessageInterceptor( playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, framework.messages.MessageType.LOAD,
(loadRequestData) => { (loadRequestData) => {
const media = loadRequestData.media; const media = loadRequestData.media;
// Special handling if it came from Google Assistant // Special handling if it came from Google Assistant
if (media.entity) { if (media.entity) {
media.contentId = media.entity; media.contentId = media.entity;
media.streamType = cast.framework.messages.StreamType.LIVE; media.streamType = framework.messages.StreamType.LIVE;
media.contentType = "application/vnd.apple.mpegurl"; media.contentType = "application/vnd.apple.mpegurl";
// @ts-ignore // @ts-ignore
media.hlsVideoSegmentFormat = media.hlsVideoSegmentFormat =
cast.framework.messages.HlsVideoSegmentFormat.FMP4; framework.messages.HlsVideoSegmentFormat.FMP4;
} }
return loadRequestData; return loadRequestData;
} }

View File

@ -1,3 +1,3 @@
import { cast } from "chromecast-caf-receiver"; import { framework } from "./cast_framework";
export const castContext = cast.framework.CastReceiverContext.getInstance(); export const castContext = framework.CastReceiverContext.getInstance();

View File

@ -0,0 +1,3 @@
import type { cast as ReceiverCast } from "chromecast-caf-receiver";
export const framework = (cast as unknown as typeof ReceiverCast).framework;

View File

@ -1,4 +1,4 @@
import { cast } from "chromecast-caf-receiver"; import { framework } from "./cast_framework";
import { CAST_NS } from "../../../src/cast/const"; import { CAST_NS } from "../../../src/cast/const";
import { HassMessage } from "../../../src/cast/receiver_messages"; import { HassMessage } from "../../../src/cast/receiver_messages";
import "../../../src/resources/custom-card-support"; import "../../../src/resources/custom-card-support";
@ -34,14 +34,14 @@ const setTouchControlsVisibility = (visible: boolean) => {
let timeOut: number | undefined; let timeOut: number | undefined;
const playDummyMedia = (viewTitle?: string) => { const playDummyMedia = (viewTitle?: string) => {
const loadRequestData = new cast.framework.messages.LoadRequestData(); const loadRequestData = new framework.messages.LoadRequestData();
loadRequestData.autoplay = true; loadRequestData.autoplay = true;
loadRequestData.media = new cast.framework.messages.MediaInformation(); loadRequestData.media = new framework.messages.MediaInformation();
loadRequestData.media.contentId = loadRequestData.media.contentId =
"https://cast.home-assistant.io/images/google-nest-hub.png"; "https://cast.home-assistant.io/images/google-nest-hub.png";
loadRequestData.media.contentType = "image/jpeg"; loadRequestData.media.contentType = "image/jpeg";
loadRequestData.media.streamType = cast.framework.messages.StreamType.NONE; loadRequestData.media.streamType = framework.messages.StreamType.NONE;
const metadata = new cast.framework.messages.GenericMediaMetadata(); const metadata = new framework.messages.GenericMediaMetadata();
metadata.title = viewTitle; metadata.title = viewTitle;
loadRequestData.media.metadata = metadata; loadRequestData.media.metadata = metadata;
@ -86,10 +86,10 @@ const showMediaPlayer = () => {
} }
}; };
const options = new cast.framework.CastReceiverOptions(); const options = new framework.CastReceiverOptions();
options.disableIdleTimeout = true; options.disableIdleTimeout = true;
options.customNamespaces = { options.customNamespaces = {
[CAST_NS]: cast.framework.system.MessageType.JSON, [CAST_NS]: framework.system.MessageType.JSON,
}; };
castContext.addCustomMessageListener( castContext.addCustomMessageListener(
@ -98,8 +98,7 @@ castContext.addCustomMessageListener(
(ev: ReceivedMessage<HassMessage>) => { (ev: ReceivedMessage<HassMessage>) => {
// We received a show Lovelace command, stop media from playing, hide media player and show Lovelace controller // We received a show Lovelace command, stop media from playing, hide media player and show Lovelace controller
if ( if (
playerManager.getPlayerState() !== playerManager.getPlayerState() !== framework.messages.PlayerState.IDLE
cast.framework.messages.PlayerState.IDLE
) { ) {
playerManager.stop(); playerManager.stop();
} else { } else {
@ -114,7 +113,7 @@ castContext.addCustomMessageListener(
const playerManager = castContext.getPlayerManager(); const playerManager = castContext.getPlayerManager();
playerManager.setMessageInterceptor( playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, framework.messages.MessageType.LOAD,
(loadRequestData) => { (loadRequestData) => {
if ( if (
loadRequestData.media.contentId === loadRequestData.media.contentId ===
@ -128,25 +127,24 @@ playerManager.setMessageInterceptor(
// Special handling if it came from Google Assistant // Special handling if it came from Google Assistant
if (media.entity) { if (media.entity) {
media.contentId = media.entity; media.contentId = media.entity;
media.streamType = cast.framework.messages.StreamType.LIVE; media.streamType = framework.messages.StreamType.LIVE;
media.contentType = "application/vnd.apple.mpegurl"; media.contentType = "application/vnd.apple.mpegurl";
// @ts-ignore // @ts-ignore
media.hlsVideoSegmentFormat = media.hlsVideoSegmentFormat =
cast.framework.messages.HlsVideoSegmentFormat.FMP4; framework.messages.HlsVideoSegmentFormat.FMP4;
} }
return loadRequestData; return loadRequestData;
} }
); );
playerManager.addEventListener( playerManager.addEventListener(
cast.framework.events.EventType.MEDIA_STATUS, framework.events.EventType.MEDIA_STATUS,
(event) => { (event) => {
if ( if (
event.mediaStatus?.playerState === event.mediaStatus?.playerState === framework.messages.PlayerState.IDLE &&
cast.framework.messages.PlayerState.IDLE &&
event.mediaStatus?.idleReason && event.mediaStatus?.idleReason &&
event.mediaStatus?.idleReason !== event.mediaStatus?.idleReason !==
cast.framework.messages.IdleReason.INTERRUPTED framework.messages.IdleReason.INTERRUPTED
) { ) {
// media finished or stopped, return to default Lovelace // media finished or stopped, return to default Lovelace
showLovelaceController(); showLovelaceController();