Skip to content

Commit

Permalink
Cleanup Discovergy config flow (home-assistant#108381)
Browse files Browse the repository at this point in the history
* Cleanup Discovergy config flow

* Make use of the helper function
  • Loading branch information
jpbede authored and catsmanac committed Jan 23, 2024
1 parent 0814646 commit 0483072
Showing 1 changed file with 35 additions and 26 deletions.
61 changes: 35 additions & 26 deletions homeassistant/components/discovergy/config_flow.py
Expand Up @@ -15,34 +15,45 @@
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.httpx_client import get_async_client
from homeassistant.helpers.selector import (
TextSelector,
TextSelectorConfig,
TextSelectorType,
)

from .const import DOMAIN

_LOGGER = logging.getLogger(__name__)


def make_schema(email: str = "", password: str = "") -> vol.Schema:
"""Create schema for config flow."""
return vol.Schema(
{
vol.Required(
CONF_EMAIL,
default=email,
): str,
vol.Required(
CONF_PASSWORD,
default=password,
): str,
}
)
CONFIG_SCHEMA = vol.Schema(
{
vol.Required(
CONF_EMAIL,
): TextSelector(
TextSelectorConfig(
type=TextSelectorType.EMAIL,
autocomplete="email",
)
),
vol.Required(
CONF_PASSWORD,
): TextSelector(
TextSelectorConfig(
type=TextSelectorType.PASSWORD,
autocomplete="current-password",
)
),
}
)


class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Discovergy."""

VERSION = 1

existing_entry: ConfigEntry | None = None
_existing_entry: ConfigEntry | None = None

async def async_step_user(
self, user_input: dict[str, Any] | None = None
Expand All @@ -51,15 +62,14 @@ async def async_step_user(
if user_input is None:
return self.async_show_form(
step_id="user",
data_schema=make_schema(),
data_schema=CONFIG_SCHEMA,
)

return await self._validate_and_save(user_input)

async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> FlowResult:
"""Handle the initial step."""
self.existing_entry = await self.async_set_unique_id(self.context["unique_id"])

self._existing_entry = await self.async_set_unique_id(self.context["unique_id"])
return await self._validate_and_save(entry_data, step_id="reauth")

async def _validate_and_save(
Expand All @@ -84,18 +94,14 @@ async def _validate_and_save(
_LOGGER.exception("Unexpected error occurred while getting meters")
errors["base"] = "unknown"
else:
if self.existing_entry:
self.hass.config_entries.async_update_entry(
self.existing_entry,
if self._existing_entry:
return self.async_update_reload_and_abort(
entry=self._existing_entry,
data={
CONF_EMAIL: user_input[CONF_EMAIL],
CONF_PASSWORD: user_input[CONF_PASSWORD],
},
)
await self.hass.config_entries.async_reload(
self.existing_entry.entry_id
)
return self.async_abort(reason="reauth_successful")

# set unique id to title which is the account email
await self.async_set_unique_id(user_input[CONF_EMAIL].lower())
Expand All @@ -107,6 +113,9 @@ async def _validate_and_save(

return self.async_show_form(
step_id=step_id,
data_schema=make_schema(),
data_schema=self.add_suggested_values_to_schema(
CONFIG_SCHEMA,
self._existing_entry.data if self._existing_entry else user_input,
),
errors=errors,
)

0 comments on commit 0483072

Please sign in to comment.