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
pull/99741/head
J. Nick Koston 2023-09-04 13:19:10 -05:00 committed by Bram Kragten
parent 423e8fbde3
commit 2bc08d1fcc
2 changed files with 8 additions and 1 deletions

View File

@ -2055,7 +2055,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

@ -1162,3 +1162,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]