mirror of
https://github.com/home-assistant/frontend.git
synced 2025-11-15 14:00:38 +00:00
Compare commits
2 Commits
add-device
...
renovate/c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65f76761b2 | ||
|
|
2b2ebe2a49 |
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
export interface ReceivedMessage<T> {
|
|
||||||
gj: boolean;
|
|
||||||
data: T;
|
|
||||||
senderId: string;
|
|
||||||
type: "message";
|
|
||||||
}
|
|
||||||
@@ -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",
|
||||||
|
|||||||
10
yarn.lock
10
yarn.lock
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user