diff --git a/src/dialogs/config-flow/show-dialog-config-flow.ts b/src/dialogs/config-flow/show-dialog-config-flow.ts index 635756a851..f176cef51d 100644 --- a/src/dialogs/config-flow/show-dialog-config-flow.ts +++ b/src/dialogs/config-flow/show-dialog-config-flow.ts @@ -87,9 +87,11 @@ export const showConfigFlowDialog = ( }, renderShowFormStepFieldError(hass, step, error) { - return hass.localize( - `component.${step.handler}.config.error.${error}`, - step.description_placeholders + return ( + hass.localize( + `component.${step.handler}.config.error.${error}`, + step.description_placeholders + ) || error ); }, diff --git a/src/panels/config/integrations/dialog-add-integration.ts b/src/panels/config/integrations/dialog-add-integration.ts index ad3a8ae3ad..fb8367ee15 100644 --- a/src/panels/config/integrations/dialog-add-integration.ts +++ b/src/panels/config/integrations/dialog-add-integration.ts @@ -48,6 +48,7 @@ export interface IntegrationListItem { config_flow?: boolean; is_helper?: boolean; integrations?: string[]; + domains?: string[]; iot_standards?: string[]; supported_by?: string; cloud?: boolean; @@ -188,6 +189,9 @@ class AddIntegrationDialog extends LitElement { ([dom, val]) => val.name || domainToName(localize, dom) ) : undefined, + domains: integration.integrations + ? Object.keys(integration.integrations) + : undefined, is_built_in: integration.is_built_in !== false, }); } else if (filter && "integration_type" in integration) { @@ -494,7 +498,7 @@ class AddIntegrationDialog extends LitElement { } if (integration.integrations) { - let domains = integration.integrations; + let domains = integration.domains || []; if (integration.domain === "apple") { // we show discoverd homekit devices in their own brand section, dont show them at apple domains = domains.filter((domain) => domain !== "homekit_controller"); diff --git a/src/panels/config/integrations/ha-domain-integrations.ts b/src/panels/config/integrations/ha-domain-integrations.ts index 12ce88a862..21f75f28d3 100644 --- a/src/panels/config/integrations/ha-domain-integrations.ts +++ b/src/panels/config/integrations/ha-domain-integrations.ts @@ -174,6 +174,15 @@ class HaDomainIntegrations extends LitElement { ? html` ${this.hass.localize("ui.panel.config.integrations.new_flow", { @@ -241,7 +250,8 @@ class HaDomainIntegrations extends LitElement { (!this.integration!.integrations || !(domain in this.integration!.integrations))))) || // config_flow being undefined means its false - !(this.integration as Brand)!.integrations?.[domain]?.config_flow + (!("integration_type" in this.integration!) && + !this.integration!.integrations?.[domain]?.config_flow) ) { const manifest = await fetchIntegrationManifest(this.hass, domain); showYamlIntegrationDialog(this, { manifest });