diff --git a/src/data/preview.ts b/src/data/preview.ts index a26b030b8f..fb009f3981 100644 --- a/src/data/preview.ts +++ b/src/data/preview.ts @@ -6,6 +6,7 @@ const HAS_CUSTOM_PREVIEW = ["generic_camera", "template"]; export interface GenericPreview { state: string; attributes: Record; + error?: string; } export const subscribePreviewGeneric = ( diff --git a/src/dialogs/config-flow/previews/flow-preview-generic.ts b/src/dialogs/config-flow/previews/flow-preview-generic.ts index b04845ecb5..2fcd270875 100644 --- a/src/dialogs/config-flow/previews/flow-preview-generic.ts +++ b/src/dialogs/config-flow/previews/flow-preview-generic.ts @@ -58,6 +58,11 @@ export class FlowPreviewGeneric extends LitElement { } private _setPreview = (preview: GenericPreview) => { + if (preview.error) { + this._error = preview.error; + this._preview = undefined; + return; + } const now = new Date().toISOString(); this._preview = { entity_id: `${this.stepId}.___flow_preview___`, @@ -80,6 +85,7 @@ export class FlowPreviewGeneric extends LitElement { if (this.flowType !== "config_flow" && this.flowType !== "options_flow") { return; } + this._error = undefined; try { this._unsub = subscribePreviewGeneric( this.hass, @@ -89,6 +95,7 @@ export class FlowPreviewGeneric extends LitElement { this.stepData, this._setPreview ); + await this._unsub; fireEvent(this, "set-flow-errors", { errors: {} }); } catch (err: any) { if (typeof err.message === "string") {