From d375dca1f190ad04bd7fc90a1bf4ac6cf01a2f0f Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Sat, 19 Oct 2024 17:12:48 +0200 Subject: [PATCH] Use new reauth helpers in smarttub (#128743) --- .../components/smarttub/config_flow.py | 34 +++++-------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/homeassistant/components/smarttub/config_flow.py b/homeassistant/components/smarttub/config_flow.py index 5caff953d6d..cf96d7082a1 100644 --- a/homeassistant/components/smarttub/config_flow.py +++ b/homeassistant/components/smarttub/config_flow.py @@ -3,12 +3,12 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any +from typing import Any from smarttub import LoginFailed import voluptuous as vol -from homeassistant.config_entries import ConfigEntry, ConfigFlow, ConfigFlowResult +from homeassistant.config_entries import SOURCE_REAUTH, ConfigFlow, ConfigFlowResult from homeassistant.const import CONF_EMAIL, CONF_PASSWORD from .const import DOMAIN @@ -24,12 +24,6 @@ class SmartTubConfigFlow(ConfigFlow, domain=DOMAIN): VERSION = 1 - def __init__(self) -> None: - """Instantiate config flow.""" - super().__init__() - self._reauth_input: Mapping[str, Any] | None = None - self._reauth_entry: ConfigEntry | None = None - async def async_step_user( self, user_input: dict[str, Any] | None = None ) -> ConfigFlowResult: @@ -48,24 +42,17 @@ class SmartTubConfigFlow(ConfigFlow, domain=DOMAIN): else: await self.async_set_unique_id(account.id) - if self._reauth_input is None: + if self.source != SOURCE_REAUTH: self._abort_if_unique_id_configured() return self.async_create_entry( title=user_input[CONF_EMAIL], data=user_input ) # this is a reauth attempt - if TYPE_CHECKING: - assert self._reauth_entry - if self._reauth_entry.unique_id != self.unique_id: - # there is a config entry matching this account, - # but it is not the one we were trying to reauth - return self.async_abort(reason="already_configured") - self.hass.config_entries.async_update_entry( - self._reauth_entry, data=user_input + self._abort_if_unique_id_mismatch(reason="already_configured") + return self.async_update_reload_and_abort( + self._get_reauth_entry(), data=user_input ) - await self.hass.config_entries.async_reload(self._reauth_entry.entry_id) - return self.async_abort(reason="reauth_successful") return self.async_show_form( step_id="user", data_schema=DATA_SCHEMA, errors=errors @@ -75,10 +62,6 @@ class SmartTubConfigFlow(ConfigFlow, domain=DOMAIN): self, entry_data: Mapping[str, Any] ) -> ConfigFlowResult: """Get new credentials if the current ones don't work anymore.""" - self._reauth_input = entry_data - 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( @@ -86,13 +69,12 @@ class SmartTubConfigFlow(ConfigFlow, domain=DOMAIN): ) -> ConfigFlowResult: """Dialog that informs the user that reauth is required.""" if user_input is None: - if TYPE_CHECKING: - assert self._reauth_input is not None # same as DATA_SCHEMA but with default email data_schema = vol.Schema( { vol.Required( - CONF_EMAIL, default=self._reauth_input.get(CONF_EMAIL) + CONF_EMAIL, + default=self._get_reauth_entry().data.get(CONF_EMAIL), ): str, vol.Required(CONF_PASSWORD): str, } -- GitLab