From 1c9764bc446d1ac8c1b85f6a069ecdfe88bb41ad Mon Sep 17 00:00:00 2001 From: Erik Montnemery <erik@montnemery.com> Date: Sun, 14 Jan 2024 11:00:10 +0100 Subject: [PATCH] Improve calls to async_show_progress in snooz (#107793) --- homeassistant/components/snooz/config_flow.py | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/snooz/config_flow.py b/homeassistant/components/snooz/config_flow.py index eb05edcbefa..d2188eeec73 100644 --- a/homeassistant/components/snooz/config_flow.py +++ b/homeassistant/components/snooz/config_flow.py @@ -134,18 +134,20 @@ class SnoozConfigFlow(ConfigFlow, domain=DOMAIN): self._pairing_task = self.hass.async_create_task( self._async_wait_for_pairing_mode() ) + + if not self._pairing_task.done(): return self.async_show_progress( step_id="wait_for_pairing_mode", progress_action="wait_for_pairing_mode", + progress_task=self._pairing_task, ) try: await self._pairing_task except asyncio.TimeoutError: - self._pairing_task = None return self.async_show_progress_done(next_step_id="pairing_timeout") - - self._pairing_task = None + finally: + self._pairing_task = None return self.async_show_progress_done(next_step_id="pairing_complete") @@ -192,15 +194,10 @@ class SnoozConfigFlow(ConfigFlow, domain=DOMAIN): ) -> bool: return device.supported(service_info) and device.is_pairing - try: - await async_process_advertisements( - self.hass, - is_device_in_pairing_mode, - {"address": self._discovery.info.address}, - BluetoothScanningMode.ACTIVE, - WAIT_FOR_PAIRING_TIMEOUT, - ) - finally: - self.hass.async_create_task( - self.hass.config_entries.flow.async_configure(flow_id=self.flow_id) - ) + await async_process_advertisements( + self.hass, + is_device_in_pairing_mode, + {"address": self._discovery.info.address}, + BluetoothScanningMode.ACTIVE, + WAIT_FOR_PAIRING_TIMEOUT, + ) -- GitLab