Compare commits

...

2 Commits

Author SHA1 Message Date
Paul Bottein
65f76761b2 Fix typings 2025-10-27 16:14:11 +01:00
renovate[bot]
2b2ebe2a49 Update dependency @types/chromecast-caf-receiver to v6.0.25 2025-10-21 10:51:15 +00:00
5 changed files with 33 additions and 41 deletions

View File

@@ -5,17 +5,17 @@ const castContext = framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager(); const playerManager = castContext.getPlayerManager();
playerManager.setMessageInterceptor( playerManager.setMessageInterceptor(
framework.messages.MessageType.LOAD, "LOAD" as 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 = framework.messages.StreamType.LIVE; media.streamType = "LIVE" as framework.messages.StreamType.LIVE;
media.contentType = "application/vnd.apple.mpegurl"; media.contentType = "application/vnd.apple.mpegurl";
// @ts-ignore // @ts-ignore
media.hlsVideoSegmentFormat = media.hlsVideoSegmentFormat =
framework.messages.HlsVideoSegmentFormat.FMP4; "fmp4" as framework.messages.HlsVideoSegmentFormat.FMP4;
} }
return loadRequestData; return loadRequestData;
} }

View File

@@ -1,10 +1,9 @@
import { framework } from "./cast_framework";
import { CAST_NS } from "../../../src/cast/const"; import { CAST_NS } from "../../../src/cast/const";
import type { HassMessage } from "../../../src/cast/receiver_messages"; import type { HassMessage } from "../../../src/cast/receiver_messages";
import "../../../src/resources/custom-card-support"; import "../../../src/resources/custom-card-support";
import { castContext } from "./cast_context"; import { castContext } from "./cast_context";
import { framework } from "./cast_framework";
import { HcMain } from "./layout/hc-main"; import { HcMain } from "./layout/hc-main";
import type { ReceivedMessage } from "./types";
const lovelaceController = new HcMain(); const lovelaceController = new HcMain();
document.body.append(lovelaceController); document.body.append(lovelaceController);
@@ -40,7 +39,8 @@ const playDummyMedia = (viewTitle?: string) => {
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 = framework.messages.StreamType.NONE; loadRequestData.media.streamType =
"NONE" as framework.messages.StreamType.NONE;
const metadata = new framework.messages.GenericMediaMetadata(); const metadata = new framework.messages.GenericMediaMetadata();
metadata.title = viewTitle; metadata.title = viewTitle;
loadRequestData.media.metadata = metadata; loadRequestData.media.metadata = metadata;
@@ -89,31 +89,28 @@ const showMediaPlayer = () => {
const options = new framework.CastReceiverOptions(); const options = new framework.CastReceiverOptions();
options.disableIdleTimeout = true; options.disableIdleTimeout = true;
options.customNamespaces = { options.customNamespaces = {
[CAST_NS]: framework.system.MessageType.JSON, [CAST_NS]: "json" as framework.system.MessageType.JSON,
}; };
castContext.addCustomMessageListener( castContext.addCustomMessageListener(CAST_NS, (ev) => {
CAST_NS, // We received a show Lovelace command, stop media from playing, hide media player and show Lovelace controller
// @ts-ignore if (
(ev: ReceivedMessage<HassMessage>) => { playerManager.getPlayerState() !==
// We received a show Lovelace command, stop media from playing, hide media player and show Lovelace controller ("IDLE" as framework.messages.PlayerState.IDLE)
if ( ) {
playerManager.getPlayerState() !== framework.messages.PlayerState.IDLE playerManager.stop();
) { } else {
playerManager.stop(); showLovelaceController();
} else {
showLovelaceController();
}
const msg = ev.data;
msg.senderId = ev.senderId;
lovelaceController.processIncomingMessage(msg);
} }
); const msg = ev.data as HassMessage;
msg.senderId = ev.senderId;
lovelaceController.processIncomingMessage(msg);
});
const playerManager = castContext.getPlayerManager(); const playerManager = castContext.getPlayerManager();
playerManager.setMessageInterceptor( playerManager.setMessageInterceptor(
framework.messages.MessageType.LOAD, "LOAD" as framework.messages.MessageType.LOAD,
(loadRequestData) => { (loadRequestData) => {
if ( if (
loadRequestData.media.contentId === loadRequestData.media.contentId ===
@@ -127,24 +124,25 @@ 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 = framework.messages.StreamType.LIVE; media.streamType = "LIVE" as framework.messages.StreamType.LIVE;
media.contentType = "application/vnd.apple.mpegurl"; media.contentType = "application/vnd.apple.mpegurl";
// @ts-ignore // @ts-ignore
media.hlsVideoSegmentFormat = media.hlsVideoSegmentFormat =
framework.messages.HlsVideoSegmentFormat.FMP4; "fmp4" as framework.messages.HlsVideoSegmentFormat.FMP4;
} }
return loadRequestData; return loadRequestData;
} }
); );
playerManager.addEventListener( playerManager.addEventListener(
framework.events.EventType.MEDIA_STATUS, "MEDIA_STATUS" as framework.events.EventType.MEDIA_STATUS,
(event) => { (event) => {
if ( if (
event.mediaStatus?.playerState === framework.messages.PlayerState.IDLE && event.mediaStatus?.playerState ===
("IDLE" as framework.messages.PlayerState.IDLE) &&
event.mediaStatus?.idleReason && event.mediaStatus?.idleReason &&
event.mediaStatus?.idleReason !== event.mediaStatus?.idleReason !==
framework.messages.IdleReason.INTERRUPTED ("INTERRUPTED" as framework.messages.IdleReason.INTERRUPTED)
) { ) {
// media finished or stopped, return to default Lovelace // media finished or stopped, return to default Lovelace
showLovelaceController(); showLovelaceController();

View File

@@ -1,6 +0,0 @@
export interface ReceivedMessage<T> {
gj: boolean;
data: T;
senderId: string;
type: "message";
}

View File

@@ -161,7 +161,7 @@
"@rspack/core": "1.5.8", "@rspack/core": "1.5.8",
"@rspack/dev-server": "1.1.4", "@rspack/dev-server": "1.1.4",
"@types/babel__plugin-transform-runtime": "7.9.5", "@types/babel__plugin-transform-runtime": "7.9.5",
"@types/chromecast-caf-receiver": "6.0.22", "@types/chromecast-caf-receiver": "6.0.25",
"@types/chromecast-caf-sender": "1.0.11", "@types/chromecast-caf-sender": "1.0.11",
"@types/color-name": "2.0.0", "@types/color-name": "2.0.0",
"@types/culori": "4.0.1", "@types/culori": "4.0.1",

View File

@@ -4467,10 +4467,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/chromecast-caf-receiver@npm:6.0.22": "@types/chromecast-caf-receiver@npm:6.0.25":
version: 6.0.22 version: 6.0.25
resolution: "@types/chromecast-caf-receiver@npm:6.0.22" resolution: "@types/chromecast-caf-receiver@npm:6.0.25"
checksum: 10/6c51cb52527776ddfa187a261b88184c98bdd61c129dd8719cba213894d565cf69073734d6473696ffd60a768f6fb5a3fe9932693f43174fbc5e7af201db8a90 checksum: 10/b3460609b6a0357949a078de59b89030181eed59b567cdc2935d99627707bfc922429fddfbe3a4deb62359018f14f163e7c81211125d303c3943203ed3d45785
languageName: node languageName: node
linkType: hard linkType: hard
@@ -9351,7 +9351,7 @@ __metadata:
"@tsparticles/engine": "npm:3.9.1" "@tsparticles/engine": "npm:3.9.1"
"@tsparticles/preset-links": "npm:3.2.0" "@tsparticles/preset-links": "npm:3.2.0"
"@types/babel__plugin-transform-runtime": "npm:7.9.5" "@types/babel__plugin-transform-runtime": "npm:7.9.5"
"@types/chromecast-caf-receiver": "npm:6.0.22" "@types/chromecast-caf-receiver": "npm:6.0.25"
"@types/chromecast-caf-sender": "npm:1.0.11" "@types/chromecast-caf-sender": "npm:1.0.11"
"@types/color-name": "npm:2.0.0" "@types/color-name": "npm:2.0.0"
"@types/culori": "npm:4.0.1" "@types/culori": "npm:4.0.1"