Improve trigger condition check on paste (#25241)

This commit is contained in:
Bram Kragten 2025-04-30 17:02:53 +03:00 committed by Paul Bottein
parent 50e39de974
commit 2e4ce71d06
No known key found for this signature in database
2 changed files with 28 additions and 5 deletions

View File

@ -492,6 +492,25 @@ export const getAutomationEditorInitData = () => {
return data; return data;
}; };
export const isTrigger = (config: unknown): boolean => {
if (!config || typeof config !== "object") {
return false;
}
const trigger = config as Record<string, unknown>;
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<string, unknown>;
return "condition" in condition && typeof condition.condition === "string";
};
export const subscribeTrigger = ( export const subscribeTrigger = (
hass: HomeAssistant, hass: HomeAssistant,
onChange: (result: { onChange: (result: {

View File

@ -26,7 +26,11 @@ import type {
ManualAutomationConfig, ManualAutomationConfig,
Trigger, Trigger,
} from "../../../data/automation"; } from "../../../data/automation";
import { normalizeAutomationConfig } from "../../../data/automation"; import {
isCondition,
isTrigger,
normalizeAutomationConfig,
} from "../../../data/automation";
import { getActionType, type Action } from "../../../data/script"; import { getActionType, type Action } from "../../../data/script";
import { haStyle } from "../../../resources/styles"; import { haStyle } from "../../../resources/styles";
import type { HomeAssistant } from "../../../types"; import type { HomeAssistant } from "../../../types";
@ -332,11 +336,11 @@ export class HaManualAutomationEditor extends LitElement {
}; };
let found = false; let found = false;
config.forEach((cfg: any) => { config.forEach((cfg: any) => {
if ("trigger" in cfg) { if (isTrigger(cfg)) {
found = true; found = true;
(newConfig.triggers as Trigger[]).push(cfg); (newConfig.triggers as Trigger[]).push(cfg);
} }
if ("condition" in cfg) { if (isCondition(cfg)) {
found = true; found = true;
(newConfig.conditions as Condition[]).push(cfg); (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] }; config = { triggers: [config] };
} }
if ("condition" in config) { if (isCondition(config)) {
config = { conditions: [config] }; config = { conditions: [config] };
} }
if (getActionType(config) !== "unknown") { if (getActionType(config) !== "unknown") {