From 44cc75afbcb30f50a6c37fe3e2612b9dc5719996 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 10 Feb 2025 09:58:10 -0500 Subject: [PATCH] Require opt-in config flow navigateToResult (#24120) --- src/dialogs/config-flow/dialog-data-entry-flow.ts | 2 ++ src/dialogs/config-flow/show-dialog-data-entry-flow.ts | 1 + src/dialogs/config-flow/step-flow-abort.ts | 1 + src/dialogs/config-flow/step-flow-create-entry.ts | 4 +++- src/panels/config/integrations/dialog-add-integration.ts | 1 + src/panels/config/integrations/ha-config-flow-card.ts | 1 + src/panels/config/integrations/ha-config-integration-page.ts | 2 ++ src/panels/config/integrations/ha-domain-integrations.ts | 2 ++ 8 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/dialogs/config-flow/dialog-data-entry-flow.ts b/src/dialogs/config-flow/dialog-data-entry-flow.ts index b86080222a..94a090ec90 100644 --- a/src/dialogs/config-flow/dialog-data-entry-flow.ts +++ b/src/dialogs/config-flow/dialog-data-entry-flow.ts @@ -282,6 +282,8 @@ class DataEntryFlowDialog extends LitElement { .flowConfig=${this._params.flowConfig} .step=${this._step} .hass=${this.hass} + .navigateToResult=${this._params + .navigateToResult} > `} `} diff --git a/src/dialogs/config-flow/show-dialog-data-entry-flow.ts b/src/dialogs/config-flow/show-dialog-data-entry-flow.ts index bb1d2bbba2..de7ed88e1e 100644 --- a/src/dialogs/config-flow/show-dialog-data-entry-flow.ts +++ b/src/dialogs/config-flow/show-dialog-data-entry-flow.ts @@ -150,6 +150,7 @@ export interface DataEntryFlowDialogParams { showAdvanced?: boolean; entryId?: string; dialogParentElement?: HTMLElement; + navigateToResult?: boolean; } export const loadDataEntryFlowDialog = () => import("./dialog-data-entry-flow"); diff --git a/src/dialogs/config-flow/step-flow-abort.ts b/src/dialogs/config-flow/step-flow-abort.ts index 49992aa9de..c509dca607 100644 --- a/src/dialogs/config-flow/step-flow-abort.ts +++ b/src/dialogs/config-flow/step-flow-abort.ts @@ -60,6 +60,7 @@ class StepFlowAbort extends LitElement { dialogClosedCallback: this.params.dialogClosedCallback, startFlowHandler: this.domain, showAdvanced: this.hass.userData?.showAdvanced, + navigateToResult: this.params.navigateToResult, }); }, }); diff --git a/src/dialogs/config-flow/step-flow-create-entry.ts b/src/dialogs/config-flow/step-flow-create-entry.ts index fb03608a04..f02f8cec63 100644 --- a/src/dialogs/config-flow/step-flow-create-entry.ts +++ b/src/dialogs/config-flow/step-flow-create-entry.ts @@ -29,6 +29,8 @@ class StepFlowCreateEntry extends LitElement { @property({ attribute: false }) public step!: DataEntryFlowStepCreateEntry; + navigateToResult = false; + private _devices = memoizeOne( ( showDevices: boolean, @@ -153,7 +155,7 @@ class StepFlowCreateEntry extends LitElement { private _flowDone(): void { fireEvent(this, "flow-update", { step: undefined }); - if (this.step.result) { + if (this.step.result && this.navigateToResult) { navigate( `/config/integrations/integration/${this.step.result.domain}#config_entry=${this.step.result.entry_id}` ); diff --git a/src/panels/config/integrations/dialog-add-integration.ts b/src/panels/config/integrations/dialog-add-integration.ts index 8e337ceef9..17c6b0d715 100644 --- a/src/panels/config/integrations/dialog-add-integration.ts +++ b/src/panels/config/integrations/dialog-add-integration.ts @@ -654,6 +654,7 @@ class AddIntegrationDialog extends LitElement { startFlowHandler: domain, showAdvanced: this.hass.userData?.showAdvanced, manifest, + navigateToResult: true, }); } diff --git a/src/panels/config/integrations/ha-config-flow-card.ts b/src/panels/config/integrations/ha-config-flow-card.ts index 54291d238a..cbed863735 100644 --- a/src/panels/config/integrations/ha-config-flow-card.ts +++ b/src/panels/config/integrations/ha-config-flow-card.ts @@ -137,6 +137,7 @@ export class HaConfigFlowCard extends LitElement { } showConfigFlowDialog(this, { continueFlowId: this.flow.flow_id, + navigateToResult: true, dialogClosedCallback: () => { this._handleFlowUpdated(); }, diff --git a/src/panels/config/integrations/ha-config-integration-page.ts b/src/panels/config/integrations/ha-config-integration-page.ts index a01b1e015b..319de4b069 100644 --- a/src/panels/config/integrations/ha-config-integration-page.ts +++ b/src/panels/config/integrations/ha-config-integration-page.ts @@ -1009,6 +1009,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) { private _continueFlow(ev) { showConfigFlowDialog(this, { continueFlowId: ev.target.flow.flow_id, + navigateToResult: true, dialogClosedCallback: () => { // this._handleFlowUpdated(); }, @@ -1384,6 +1385,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) { showAdvanced: this.hass.userData?.showAdvanced, manifest: await fetchIntegrationManifest(this.hass, configEntry.domain), entryId: configEntry.entry_id, + navigateToResult: true, }); } diff --git a/src/panels/config/integrations/ha-domain-integrations.ts b/src/panels/config/integrations/ha-domain-integrations.ts index f2473e098c..b9fc656e04 100644 --- a/src/panels/config/integrations/ha-domain-integrations.ts +++ b/src/panels/config/integrations/ha-domain-integrations.ts @@ -279,6 +279,7 @@ class HaDomainIntegrations extends LitElement { { startFlowHandler: domain, showAdvanced: this.hass.userData?.showAdvanced, + navigateToResult: true, manifest: await fetchIntegrationManifest(this.hass, domain), } ); @@ -295,6 +296,7 @@ class HaDomainIntegrations extends LitElement { root instanceof ShadowRoot ? (root.host as HTMLElement) : this, { continueFlowId: flow.flow_id, + navigateToResult: true, showAdvanced: this.hass.userData?.showAdvanced, manifest: await fetchIntegrationManifest(this.hass, flow.handler), }