Use-consume-scene-editor (#23754)

* Add fullDevicesContext provider

* Use consume in ha-scene-editor

* Remove not needed device context and generate category
This commit is contained in:
Wendelin 2025-01-15 17:06:59 +01:00 committed by GitHub
parent d112872eb2
commit c17c1e4217
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,6 @@
import type { ActionDetail } from "@material/mwc-list/mwc-list-foundation"; import type { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
import "@material/mwc-list/mwc-list"; import "@material/mwc-list/mwc-list";
import { consume } from "@lit-labs/context";
import { import {
mdiCog, mdiCog,
mdiContentDuplicate, mdiContentDuplicate,
@ -41,15 +42,9 @@ import "../../../components/ha-list-item";
import "../../../components/ha-svg-icon"; import "../../../components/ha-svg-icon";
import "../../../components/ha-textfield"; import "../../../components/ha-textfield";
import type { DeviceRegistryEntry } from "../../../data/device_registry"; import type { DeviceRegistryEntry } from "../../../data/device_registry";
import { import { computeDeviceName } from "../../../data/device_registry";
computeDeviceName,
subscribeDeviceRegistry,
} from "../../../data/device_registry";
import type { EntityRegistryEntry } from "../../../data/entity_registry"; import type { EntityRegistryEntry } from "../../../data/entity_registry";
import { import { updateEntityRegistryEntry } from "../../../data/entity_registry";
subscribeEntityRegistry,
updateEntityRegistryEntry,
} from "../../../data/entity_registry";
import type { import type {
SceneConfig, SceneConfig,
SceneEntities, SceneEntities,
@ -72,12 +67,12 @@ import {
} from "../../../dialogs/generic/show-dialog-box"; } from "../../../dialogs/generic/show-dialog-box";
import "../../../layouts/hass-subpage"; import "../../../layouts/hass-subpage";
import { KeyboardShortcutMixin } from "../../../mixins/keyboard-shortcut-mixin"; import { KeyboardShortcutMixin } from "../../../mixins/keyboard-shortcut-mixin";
import { SubscribeMixin } from "../../../mixins/subscribe-mixin";
import { haStyle } from "../../../resources/styles"; import { haStyle } from "../../../resources/styles";
import type { HomeAssistant, Route } from "../../../types"; import type { HomeAssistant, Route } from "../../../types";
import { showToast } from "../../../util/toast"; import { showToast } from "../../../util/toast";
import "../ha-config-section"; import "../ha-config-section";
import { PreventUnsavedMixin } from "../../../mixins/prevent-unsaved-mixin"; import { PreventUnsavedMixin } from "../../../mixins/prevent-unsaved-mixin";
import { fullEntitiesContext } from "../../../data/context";
interface DeviceEntities { interface DeviceEntities {
id: string; id: string;
@ -89,7 +84,7 @@ type DeviceEntitiesLookup = Record<string, string[]>;
@customElement("ha-scene-editor") @customElement("ha-scene-editor")
export class HaSceneEditor extends PreventUnsavedMixin( export class HaSceneEditor extends PreventUnsavedMixin(
SubscribeMixin(KeyboardShortcutMixin(LitElement)) KeyboardShortcutMixin(LitElement)
) { ) {
@property({ attribute: false }) public hass!: HomeAssistant; @property({ attribute: false }) public hass!: HomeAssistant;
@ -120,9 +115,7 @@ export class HaSceneEditor extends PreventUnsavedMixin(
@state() private _devices: string[] = []; @state() private _devices: string[] = [];
@state() @state()
private _deviceRegistryEntries: DeviceRegistryEntry[] = []; @consume({ context: fullEntitiesContext, subscribe: true })
@state()
private _entityRegistryEntries: EntityRegistryEntry[] = []; private _entityRegistryEntries: EntityRegistryEntry[] = [];
@state() private _scene?: SceneEntity; @state() private _scene?: SceneEntity;
@ -221,17 +214,6 @@ export class HaSceneEditor extends PreventUnsavedMixin(
} }
} }
public hassSubscribe() {
return [
subscribeEntityRegistry(this.hass.connection, (entries) => {
this._entityRegistryEntries = entries;
}),
subscribeDeviceRegistry(this.hass.connection, (entries) => {
this._deviceRegistryEntries = entries;
}),
];
}
protected render() { protected render() {
if (!this.hass) { if (!this.hass) {
return nothing; return nothing;
@ -347,7 +329,7 @@ export class HaSceneEditor extends PreventUnsavedMixin(
this._entities, this._entities,
this._devices, this._devices,
this._deviceEntityLookup, this._deviceEntityLookup,
this._deviceRegistryEntries Object.values(this.hass.devices)
); );
return html` <div return html` <div
id="root" id="root"