From 6a2cad1af309fce352b7760c8712689af5769ccb Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 3 Jul 2023 15:24:19 +0200 Subject: [PATCH] Fix device automations from device page (#17145) --- .../ha-device-automation-card.ts | 12 ++++------- .../ha-device-automation-dialog.ts | 3 +++ .../show-dialog-device-automation.ts | 2 ++ .../config/devices/ha-config-device-page.ts | 21 +++++++++++++------ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/panels/config/devices/device-detail/ha-device-automation-card.ts b/src/panels/config/devices/device-detail/ha-device-automation-card.ts index bee7d36d66..9bf3e433ea 100644 --- a/src/panels/config/devices/device-detail/ha-device-automation-card.ts +++ b/src/panels/config/devices/device-detail/ha-device-automation-card.ts @@ -1,11 +1,9 @@ -import { consume } from "@lit-labs/context"; import { css, html, LitElement, nothing } from "lit"; import { property, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-chip"; import "../../../../components/ha-chip-set"; import { showAutomationEditor } from "../../../../data/automation"; -import { fullEntitiesContext } from "../../../../data/context"; import { DeviceAction, DeviceAutomation, @@ -32,11 +30,9 @@ export abstract class HaDeviceAutomationCard< @property({ attribute: false }) public automations: T[] = []; - @state() public _showSecondary = false; + @property({ attribute: false }) entityReg?: EntityRegistryEntry[]; - @state() - @consume({ context: fullEntitiesContext, subscribe: true }) - _entityReg!: EntityRegistryEntry[]; + @state() public _showSecondary = false; abstract headerKey: Parameters[0]; @@ -67,7 +63,7 @@ export abstract class HaDeviceAutomationCard< } protected render() { - if (this.automations.length === 0) { + if (this.automations.length === 0 || !this.entityReg) { return nothing; } const automations = this._showSecondary @@ -89,7 +85,7 @@ export abstract class HaDeviceAutomationCard< > ${this._localizeDeviceAutomation( this.hass, - this._entityReg, + this.entityReg!, automation )} diff --git a/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts b/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts index c116ef0ddd..f3d1835b1c 100644 --- a/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts +++ b/src/panels/config/devices/device-detail/ha-device-automation-dialog.ts @@ -109,6 +109,7 @@ export class DialogDeviceAutomation extends LitElement { ` : ""} @@ -117,6 +118,7 @@ export class DialogDeviceAutomation extends LitElement { ` : ""} @@ -126,6 +128,7 @@ export class DialogDeviceAutomation extends LitElement { .hass=${this.hass} .automations=${this._actions} .script=${this._params.script} + .entityReg=${this._params.entityReg} > ` : ""} diff --git a/src/panels/config/devices/device-detail/show-dialog-device-automation.ts b/src/panels/config/devices/device-detail/show-dialog-device-automation.ts index 4f00987bdf..b57efd7e3c 100644 --- a/src/panels/config/devices/device-detail/show-dialog-device-automation.ts +++ b/src/panels/config/devices/device-detail/show-dialog-device-automation.ts @@ -1,8 +1,10 @@ import { fireEvent } from "../../../../common/dom/fire_event"; import { DeviceRegistryEntry } from "../../../../data/device_registry"; +import { EntityRegistryEntry } from "../../../../data/entity_registry"; export interface DeviceAutomationDialogParams { device: DeviceRegistryEntry; + entityReg: EntityRegistryEntry[]; script?: boolean; } diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index d2b4d27445..2cd52f253c 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -20,6 +20,7 @@ import { import { customElement, property, state } from "lit/decorators"; import { ifDefined } from "lit/directives/if-defined"; import memoizeOne from "memoize-one"; +import { consume } from "@lit-labs/context"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import { SENSOR_ENTITIES } from "../../../common/const"; import { computeDomain } from "../../../common/entity/compute_domain"; @@ -84,6 +85,7 @@ import { loadDeviceRegistryDetailDialog, showDeviceRegistryDetailDialog, } from "./device-registry-detail/show-dialog-device-registry-detail"; +import { fullEntitiesContext } from "../../../data/context"; export interface EntityRegistryStateEntry extends EntityRegistryEntry { stateName?: string | null; @@ -137,6 +139,10 @@ export class HaConfigDevicePage extends LitElement { @state() private _deviceAlerts?: DeviceAlert[]; + @state() + @consume({ context: fullEntitiesContext, subscribe: true }) + _entityReg!: EntityRegistryEntry[]; + private _logbookTime = { recent: 86400 }; private _device = memoizeOne( @@ -422,12 +428,13 @@ export class HaConfigDevicePage extends LitElement { ) : this.hass.localize( "ui.panel.config.devices.automation.create", - "type", - this.hass.localize( - `ui.panel.config.devices.type.${ - device.entry_type || "device" - }` - ) + { + type: this.hass.localize( + `ui.panel.config.devices.type.${ + device.entry_type || "device" + }` + ), + } )} .path=${mdiPlusCircle} > @@ -1180,6 +1187,7 @@ export class HaConfigDevicePage extends LitElement { private _showScriptDialog() { showDeviceAutomationDialog(this, { device: this._device(this.deviceId, this.devices)!, + entityReg: this._entityReg, script: true, }); } @@ -1187,6 +1195,7 @@ export class HaConfigDevicePage extends LitElement { private _showAutomationDialog() { showDeviceAutomationDialog(this, { device: this._device(this.deviceId, this.devices)!, + entityReg: this._entityReg, script: false, }); }