Fix module check in _async_get_flow_handler (#99509)

We should have been checking for the module in hass.data[DATA_COMPONENTS]
and not hass.config.components as the check was ineffective if there were
no existing integrations instances for the domain which is the case for
discovery or when the integration is ignored
This commit is contained in:
J. Nick Koston 2023-09-04 13:19:10 -05:00 committed by GitHub
parent 7e36da4cc0
commit e5ebba0753
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -2081,7 +2081,9 @@ async def _async_get_flow_handler(
"""Get a flow handler for specified domain."""
# First check if there is a handler registered for the domain
if domain in hass.config.components and (handler := HANDLERS.get(domain)):
if loader.is_component_module_loaded(hass, f"{domain}.config_flow") and (
handler := HANDLERS.get(domain)
):
return handler
await _load_integration(hass, domain, hass_config)

View File

@ -1187,3 +1187,8 @@ def _lookup_path(hass: HomeAssistant) -> list[str]:
if hass.config.safe_mode:
return [PACKAGE_BUILTIN]
return [PACKAGE_CUSTOM_COMPONENTS, PACKAGE_BUILTIN]
def is_component_module_loaded(hass: HomeAssistant, module: str) -> bool:
"""Test if a component module is loaded."""
return module in hass.data[DATA_COMPONENTS]