From 22e86af5b393ecb6dbcc3299fd6cb2df5d9da7e1 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 27 Nov 2023 11:28:49 +0100 Subject: [PATCH] Fix race condition with Data Entry Flow Progress (#18775) --- .../config-flow/dialog-data-entry-flow.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/dialogs/config-flow/dialog-data-entry-flow.ts b/src/dialogs/config-flow/dialog-data-entry-flow.ts index a4d48a4592..e80eedd321 100644 --- a/src/dialogs/config-flow/dialog-data-entry-flow.ts +++ b/src/dialogs/config-flow/dialog-data-entry-flow.ts @@ -2,15 +2,15 @@ import "@material/mwc-button"; import { mdiClose, mdiHelpCircle } from "@mdi/js"; import type { UnsubscribeFunc } from "home-assistant-js-websocket"; import { - css, CSSResultGroup, - html, LitElement, PropertyValues, + css, + html, nothing, } from "lit"; import { customElement, state } from "lit/decorators"; -import { fireEvent, HASSDomEvent } from "../../common/dom/fire_event"; +import { HASSDomEvent, fireEvent } from "../../common/dom/fire_event"; import "../../components/ha-circular-progress"; import "../../components/ha-dialog"; import "../../components/ha-icon-button"; @@ -410,7 +410,7 @@ class DataEntryFlowDialog extends LitElement { this._step = step; } - private _subscribeDataEntryFlowProgressed() { + private async _subscribeDataEntryFlowProgressed() { if (this._unsubDataEntryFlowProgressed) { return; } @@ -421,10 +421,17 @@ class DataEntryFlowDialog extends LitElement { return; } this._processStep( - this._params!.flowConfig.fetchFlow(this.hass, this._step?.flow_id) + this._params!.flowConfig.fetchFlow(this.hass, this._step.flow_id) ); } ); + if (this._step?.flow_id) { + await this._unsubDataEntryFlowProgressed; + // fetch flow after we subscribe to the event, so we don't miss the first event + this._processStep( + this._params!.flowConfig.fetchFlow(this.hass, this._step.flow_id) + ); + } } static get styles(): CSSResultGroup {