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