From 4fc872a4cbb33bfc3cbb9fcd76ed6434e899a52e Mon Sep 17 00:00:00 2001
From: epenet <6771947+epenet@users.noreply.github.com>
Date: Sun, 20 Oct 2024 15:30:49 +0200
Subject: [PATCH] Use new reauth helpers in weheat (#128824)

---
 .../components/weheat/config_flow.py          | 23 ++++++-------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/homeassistant/components/weheat/config_flow.py b/homeassistant/components/weheat/config_flow.py
index c1eccaf6ba7..b1a0b5dd4ea 100644
--- a/homeassistant/components/weheat/config_flow.py
+++ b/homeassistant/components/weheat/config_flow.py
@@ -6,7 +6,7 @@ from typing import Any
 
 from weheat.abstractions.user import get_user_id_from_token
 
-from homeassistant.config_entries import ConfigEntry, ConfigFlowResult
+from homeassistant.config_entries import SOURCE_REAUTH, ConfigFlowResult
 from homeassistant.const import CONF_ACCESS_TOKEN, CONF_TOKEN
 from homeassistant.helpers.config_entry_oauth2_flow import AbstractOAuth2FlowHandler
 
@@ -18,8 +18,6 @@ class OAuth2FlowHandler(AbstractOAuth2FlowHandler, domain=DOMAIN):
 
     DOMAIN = DOMAIN
 
-    reauth_entry: ConfigEntry | None = None
-
     @property
     def logger(self) -> logging.Logger:
         """Return logger."""
@@ -38,28 +36,21 @@ class OAuth2FlowHandler(AbstractOAuth2FlowHandler, domain=DOMAIN):
         user_id = await get_user_id_from_token(
             API_URL, data[CONF_TOKEN][CONF_ACCESS_TOKEN]
         )
-        if not self.reauth_entry:
-            await self.async_set_unique_id(user_id)
+        await self.async_set_unique_id(user_id)
+        if self.source != SOURCE_REAUTH:
             self._abort_if_unique_id_configured()
 
             return self.async_create_entry(title=ENTRY_TITLE, data=data)
 
-        if self.reauth_entry.unique_id == user_id:
-            return self.async_update_reload_and_abort(
-                self.reauth_entry,
-                unique_id=user_id,
-                data={**self.reauth_entry.data, **data},
-            )
-
-        return self.async_abort(reason="wrong_account")
+        self._abort_if_unique_id_mismatch(reason="wrong_account")
+        return self.async_update_reload_and_abort(
+            self._get_reauth_entry(), data_updates=data
+        )
 
     async def async_step_reauth(
         self, entry_data: Mapping[str, Any]
     ) -> ConfigFlowResult:
         """Perform reauth upon an API authentication error."""
-        self.reauth_entry = self.hass.config_entries.async_get_entry(
-            self.context["entry_id"]
-        )
         return await self.async_step_reauth_confirm()
 
     async def async_step_reauth_confirm(
-- 
GitLab