From 7ffc87ea991bac9a07cf214a4d138a2f12b506b5 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Wed, 16 Dec 2020 17:46:24 +0100 Subject: [PATCH 1/3] Consistently use isComponentLoaded() helper --- src/components/ha-camera-stream.ts | 3 ++- src/dialogs/more-info/controls/more-info-camera.ts | 3 ++- src/panels/config/cloud/account/cloud-webhooks.ts | 3 ++- src/panels/config/info/system-health-card.ts | 3 ++- src/panels/lovelace/common/generate-lovelace-config.ts | 5 ++++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/components/ha-camera-stream.ts b/src/components/ha-camera-stream.ts index 4a8a14e05f3d..adc3913644de 100644 --- a/src/components/ha-camera-stream.ts +++ b/src/components/ha-camera-stream.ts @@ -12,6 +12,7 @@ import { import { fireEvent } from "../common/dom/fire_event"; import { computeStateName } from "../common/entity/compute_state_name"; import { supportsFeature } from "../common/entity/supports-feature"; +import { isComponentLoaded } from "../common/config/is_component_loaded"; import { CameraEntity, CAMERA_SUPPORT_STREAM, @@ -86,7 +87,7 @@ class HaCameraStream extends LitElement { private get _shouldRenderMJPEG() { return ( this._forceMJPEG === this.stateObj!.entity_id || - !this.hass!.config.components.includes("stream") || + !isComponentLoaded(this.hass!, "stream") || !supportsFeature(this.stateObj!, CAMERA_SUPPORT_STREAM) ); } diff --git a/src/dialogs/more-info/controls/more-info-camera.ts b/src/dialogs/more-info/controls/more-info-camera.ts index 5dc4a004ce42..034959989674 100644 --- a/src/dialogs/more-info/controls/more-info-camera.ts +++ b/src/dialogs/more-info/controls/more-info-camera.ts @@ -11,6 +11,7 @@ import { TemplateResult, } from "lit-element"; import { supportsFeature } from "../../../common/entity/supports-feature"; +import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import "../../../components/ha-camera-stream"; import { CameraPreferences, @@ -81,7 +82,7 @@ class MoreInfoCamera extends LitElement { if ( curEntityId && - this.hass!.config.components.includes("stream") && + isComponentLoaded(this.hass!, "stream") && supportsFeature(this.stateObj!, CAMERA_SUPPORT_STREAM) ) { // Fetch in background while we set up the video. diff --git a/src/panels/config/cloud/account/cloud-webhooks.ts b/src/panels/config/cloud/account/cloud-webhooks.ts index fbbd1bfc82a5..57f4ee24ac46 100644 --- a/src/panels/config/cloud/account/cloud-webhooks.ts +++ b/src/panels/config/cloud/account/cloud-webhooks.ts @@ -14,6 +14,7 @@ import "../../../../components/ha-card"; import "../../../../components/ha-circular-progress"; import "../../../../components/ha-settings-row"; import "../../../../components/ha-switch"; +import { isComponentLoaded } from "../../../../common/config/is_component_loaded"; import { CloudStatusLoggedIn, CloudWebhook, @@ -202,7 +203,7 @@ export class CloudWebhooks extends LitElement { } private async _fetchData() { - this._localHooks = this.hass!.config.components.includes("webhook") + this._localHooks = isComponentLoaded(this.hass!, "webhook") ? await fetchWebhooks(this.hass!) : []; } diff --git a/src/panels/config/info/system-health-card.ts b/src/panels/config/info/system-health-card.ts index 95947cce0d3a..577c22af42af 100644 --- a/src/panels/config/info/system-health-card.ts +++ b/src/panels/config/info/system-health-card.ts @@ -15,6 +15,7 @@ import { } from "lit-element"; import { formatDateTime } from "../../../common/datetime/format_date_time"; import { copyToClipboard } from "../../../common/util/copy-clipboard"; +import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import "../../../components/ha-button-menu"; import "../../../components/ha-card"; import "../../../components/ha-circular-progress"; @@ -179,7 +180,7 @@ class SystemHealthCard extends LitElement { this.hass!.loadBackendTranslation("system_health"); - if (!this.hass!.config.components.includes("system_health")) { + if (!isComponentLoaded(this.hass!, "system_health")) { this._info = { system_health: { info: { diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index ab4d0c975cec..6f441bb635fd 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -14,6 +14,7 @@ import { splitByGroups } from "../../../common/entity/split_by_groups"; import { compare } from "../../../common/string/compare"; import { LocalizeFunc } from "../../../common/translations/localize"; import { subscribeOne } from "../../../common/util/subscribe-one"; +import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { AreaRegistryEntry, subscribeAreaRegistry, @@ -382,6 +383,7 @@ export const generateDefaultViewConfig = ( }; export const generateLovelaceConfigFromData = async ( + hass: HomeAssistant, config: HassConfig, areaEntries: AreaRegistryEntry[], deviceEntries: DeviceRegistryEntry[], @@ -440,7 +442,7 @@ export const generateLovelaceConfigFromData = async ( ); // Add map of geo locations to default view if loaded - if (config.components.includes("geo_location")) { + if (isComponentLoaded(hass, "geo_location")) { if (views[0] && views[0].cards) { views[0].cards.push({ type: "map", @@ -510,6 +512,7 @@ export const generateLovelaceConfigFromHass = async ( ]); return generateLovelaceConfigFromData( + hass, hass.config, areaEntries, deviceEntries, From 3c9564bf76e3cb55df9a66b3d8f12f4434d88c81 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Wed, 16 Dec 2020 21:16:35 +0100 Subject: [PATCH 2/3] Cleanup --- src/panels/lovelace/common/generate-lovelace-config.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index 6f441bb635fd..d9a4c01ff2f4 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -384,16 +384,15 @@ export const generateDefaultViewConfig = ( export const generateLovelaceConfigFromData = async ( hass: HomeAssistant, - config: HassConfig, areaEntries: AreaRegistryEntry[], deviceEntries: DeviceRegistryEntry[], entityEntries: EntityRegistryEntry[], entities: HassEntities, localize: LocalizeFunc ): Promise => { - if (config.safe_mode) { + if (hass.config.safe_mode) { return { - title: config.location_name, + title: hass.config.location_name, views: [ { cards: [{ type: "safe-mode" }], @@ -423,7 +422,7 @@ export const generateLovelaceConfigFromData = async ( ); }); - let title = config.location_name; + let title = hass.config.location_name; // User can override default view. If they didn't, we will add one // that contains all entities. @@ -513,7 +512,6 @@ export const generateLovelaceConfigFromHass = async ( return generateLovelaceConfigFromData( hass, - hass.config, areaEntries, deviceEntries, entityEntries, From 0c1eb36d862152ce14105135603964d89281522d Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Wed, 16 Dec 2020 21:20:58 +0100 Subject: [PATCH 3/3] Lint --- src/panels/lovelace/common/generate-lovelace-config.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index d9a4c01ff2f4..bd11c3946e5e 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -1,5 +1,4 @@ import { - HassConfig, HassEntities, HassEntity, STATE_NOT_RUNNING,