From d03449c60aace0a2bcdfcfe2d2ef1db93d767b86 Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Wed, 13 Mar 2024 17:56:01 +0100 Subject: [PATCH] Use set instead of list --- .../lovelace/common/validate-condition.ts | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/panels/lovelace/common/validate-condition.ts b/src/panels/lovelace/common/validate-condition.ts index 244934067f..1769683a0a 100644 --- a/src/panels/lovelace/common/validate-condition.ts +++ b/src/panels/lovelace/common/validate-condition.ts @@ -180,24 +180,38 @@ export function checkConditionsMet( }); } -export function extractConditionEntityIds(conditions: Condition[]): string[] { - const entityIds: string[] = []; +export function extractConditionEntityIds( + conditions: Condition[] +): Set { + const entityIds: Set = new Set(); for (const condition of conditions) { if (condition.condition === "numeric_state") { if ( typeof condition.above === "string" && isValidEntityId(condition.above) ) { - entityIds.push(condition.above); + entityIds.add(condition.above); } if ( typeof condition.below === "string" && isValidEntityId(condition.below) ) { - entityIds.push(condition.below); + entityIds.add(condition.below); } + } else if (condition.condition === "state") { + [ + ...ensureArray(condition.state), + ...ensureArray(condition.state_not), + ].forEach((state) => { + if (!!state && isValidEntityId(state)) { + entityIds.add(state); + } + }); } else if ("conditions" in condition && condition.conditions) { - entityIds.push(...extractConditionEntityIds(condition.conditions)); + return new Set([ + ...entityIds, + ...extractConditionEntityIds(condition.conditions), + ]); } } return entityIds;