mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-26 18:56:39 +00:00
Fix cast build (#17162)
This commit is contained in:
parent
75b6b9cfd9
commit
7584404d31
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
3
cast/src/receiver/cast_framework.ts
Normal file
3
cast/src/receiver/cast_framework.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import type { cast as ReceiverCast } from "chromecast-caf-receiver";
|
||||||
|
|
||||||
|
export const framework = (cast as unknown as typeof ReceiverCast).framework;
|
@ -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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user