From 933761d425eb1670e1bbe57e18cf85b92df25440 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 25 Apr 2023 18:15:27 +0200 Subject: [PATCH] Fix cloud connected signal only firing once (#92009) --- homeassistant/components/cloud/__init__.py | 8 ++++++-- tests/components/cloud/test_init.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/cloud/__init__.py b/homeassistant/components/cloud/__init__.py index 0cb2665767b..fc0261dec83 100644 --- a/homeassistant/components/cloud/__init__.py +++ b/homeassistant/components/cloud/__init__.py @@ -272,8 +272,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: if subscription_info := await async_subscription_info(cloud): async_manage_legacy_subscription_issue(hass, subscription_info) - async def _on_connect(): - """Discover RemoteUI binary sensor.""" + async def _discover_platforms(): + """Discover platforms.""" nonlocal loaded # Prevent multiple discovery @@ -285,6 +285,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: await async_load_platform(hass, Platform.STT, DOMAIN, {}, config) await async_load_platform(hass, Platform.TTS, DOMAIN, {}, config) + async def _on_connect(): + """Handle cloud connect.""" + await _discover_platforms() + async_dispatcher_send( hass, SIGNAL_CLOUD_CONNECTION_STATE, CloudConnectionState.CLOUD_CONNECTED ) diff --git a/tests/components/cloud/test_init.py b/tests/components/cloud/test_init.py index b082fba25e8..b3ec96f08e6 100644 --- a/tests/components/cloud/test_init.py +++ b/tests/components/cloud/test_init.py @@ -160,7 +160,7 @@ async def test_on_connect(hass: HomeAssistant, mock_cloud_fixture) -> None: assert len(mock_load.mock_calls) == 0 - assert len(cloud_states) == 1 + assert len(cloud_states) == 2 assert cloud_states[-1] == cloud.CloudConnectionState.CLOUD_CONNECTED assert len(cl.iot._on_disconnect) == 2 @@ -168,7 +168,7 @@ async def test_on_connect(hass: HomeAssistant, mock_cloud_fixture) -> None: await cl.iot._on_disconnect[-1]() await hass.async_block_till_done() - assert len(cloud_states) == 2 + assert len(cloud_states) == 3 assert cloud_states[-1] == cloud.CloudConnectionState.CLOUD_DISCONNECTED