import "@material/mwc-button"; import { mdiCastConnected, mdiCast } from "@mdi/js"; import type { Auth, Connection, getAuthOptions, } from "home-assistant-js-websocket"; import { createConnection, ERR_CANNOT_CONNECT, ERR_HASS_HOST_REQUIRED, ERR_INVALID_AUTH, ERR_INVALID_HTTPS_TO_HTTP, getAuth, } from "home-assistant-js-websocket"; import type { CSSResultGroup, TemplateResult } from "lit"; import { css, html, LitElement } from "lit"; import { customElement, state } from "lit/decorators"; import type { CastManager } from "../../../../src/cast/cast_manager"; import { getCastManager } from "../../../../src/cast/cast_manager"; import { castSendShowDemo } from "../../../../src/cast/receiver_messages"; import { loadTokens, saveTokens, } from "../../../../src/common/auth/token_storage"; import "../../../../src/components/ha-svg-icon"; import "../../../../src/layouts/hass-loading-screen"; import { registerServiceWorker } from "../../../../src/util/register-service-worker"; import "./hc-layout"; import "../../../../src/components/ha-textfield"; const seeFAQ = (qid) => html` See the FAQ for more information. `; const translateErr = (err) => err === ERR_CANNOT_CONNECT ? "Unable to connect" : err === ERR_HASS_HOST_REQUIRED ? "Please enter a Home Assistant URL." : err === ERR_INVALID_HTTPS_TO_HTTP ? html` Cannot connect to Home Assistant instances over "http://". ${seeFAQ("https")} ` : `Unknown error (${err}).`; const INTRO = html`
Home Assistant Cast allows you to cast your Home Assistant installation to Chromecast video devices and to Google Assistant devices with a screen.
For more information, see the frequently asked questions.
`; @customElement("hc-connect") export class HcConnect extends LitElement { @state() private loading = false; // If we had stored credentials but we cannot connect, // show a screen asking retry or logout. @state() private cannotConnect = false; @state() private error?: string | TemplateResult; @state() private auth?: Auth; @state() private connection?: Connection; @state() private castManager?: CastManager | null; private openDemo = false; protected render(): TemplateResult { if (this.cannotConnect) { const tokens = loadTokens(); return html`The Cast API is not available in your browser. ${seeFAQ("browser")}
To get started, enter your Home Assistant URL and click authorize. If you want a preview instead, click the show demo button.
${this.error}
` : ""}