From 2e4ce71d0604164334fb46c83d41d5896f60ff7b Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Wed, 30 Apr 2025 17:02:53 +0300 Subject: [PATCH] Improve trigger condition check on paste (#25241) --- src/data/automation.ts | 19 +++++++++++++++++++ .../automation/manual-automation-editor.ts | 14 +++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/data/automation.ts b/src/data/automation.ts index 7308e51e34..1e57fde2ff 100644 --- a/src/data/automation.ts +++ b/src/data/automation.ts @@ -492,6 +492,25 @@ export const getAutomationEditorInitData = () => { return data; }; +export const isTrigger = (config: unknown): boolean => { + if (!config || typeof config !== "object") { + return false; + } + const trigger = config as Record; + return ( + ("trigger" in trigger && typeof trigger.trigger === "string") || + ("platform" in trigger && typeof trigger.platform === "string") + ); +}; + +export const isCondition = (config: unknown): boolean => { + if (!config || typeof config !== "object") { + return false; + } + const condition = config as Record; + return "condition" in condition && typeof condition.condition === "string"; +}; + export const subscribeTrigger = ( hass: HomeAssistant, onChange: (result: { diff --git a/src/panels/config/automation/manual-automation-editor.ts b/src/panels/config/automation/manual-automation-editor.ts index 57583f0505..8e0ae2209f 100644 --- a/src/panels/config/automation/manual-automation-editor.ts +++ b/src/panels/config/automation/manual-automation-editor.ts @@ -26,7 +26,11 @@ import type { ManualAutomationConfig, Trigger, } from "../../../data/automation"; -import { normalizeAutomationConfig } from "../../../data/automation"; +import { + isCondition, + isTrigger, + normalizeAutomationConfig, +} from "../../../data/automation"; import { getActionType, type Action } from "../../../data/script"; import { haStyle } from "../../../resources/styles"; import type { HomeAssistant } from "../../../types"; @@ -332,11 +336,11 @@ export class HaManualAutomationEditor extends LitElement { }; let found = false; config.forEach((cfg: any) => { - if ("trigger" in cfg) { + if (isTrigger(cfg)) { found = true; (newConfig.triggers as Trigger[]).push(cfg); } - if ("condition" in cfg) { + if (isCondition(cfg)) { found = true; (newConfig.conditions as Condition[]).push(cfg); } @@ -351,10 +355,10 @@ export class HaManualAutomationEditor extends LitElement { } } - if ("trigger" in config) { + if (isTrigger(config)) { config = { triggers: [config] }; } - if ("condition" in config) { + if (isCondition(config)) { config = { conditions: [config] }; } if (getActionType(config) !== "unknown") {