From e46e502db37a5df5a63cba1ead13bf83d8266358 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 12 Sep 2025 09:45:26 -0500 Subject: [PATCH] make sure we can do bulk ops for non-unique id entities --- .../config/entities/ha-config-entities.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/panels/config/entities/ha-config-entities.ts b/src/panels/config/entities/ha-config-entities.ts index 5cf45fbf51..e56ea49749 100644 --- a/src/panels/config/entities/ha-config-entities.ts +++ b/src/panels/config/entities/ha-config-entities.ts @@ -590,6 +590,18 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { }) ); + private _hasNonUniqueIdEntities = memoize( + (selected: string[], filteredEntities: EntityRow[]) => { + // Create a Set of readonly entity IDs for O(1) lookup + const readonlyEntityIds = new Set( + filteredEntities + .filter((e) => e.readonly === true) + .map((e) => e.entity_id) + ); + return selected.some((entityId) => readonlyEntityIds.has(entityId)); + } + ); + private _filteredEntitiesAndDomains = memoize( ( localize: LocalizeFunc, @@ -884,15 +896,10 @@ export class HaConfigEntities extends SubscribeMixin(LitElement) { [...filteredDomains][0] ); - // Check if any selected entities are without unique IDs - // Create a Set of readonly entity IDs for O(1) lookup - const readonlyEntityIds = new Set( + // Check if any selected entities are without unique IDs (memoized for performance) + const hasNonUniqueIdEntities = this._hasNonUniqueIdEntities( + this._selected, filteredEntities - .filter((e) => e.readonly === true) - .map((e) => e.entity_id) - ); - const hasNonUniqueIdEntities = this._selected.some((entityId) => - readonlyEntityIds.has(entityId) ); // Helper to render menu items that can be disabled for non-unique ID entities