async def async_step_user(self, user_input: dict[str, Any] | None = None ) -> FlowResult: """Handle the initial step via config flow.""" errors = {} if user_input: try: await self.async_validate_input(user_input) except TooManyRequestsException: errors["base"] = "too_many_requests" except BadCredentialsException: errors["base"] = "invalid_auth" except (TimeoutError, ClientError): errors["base"] = "cannot_connect" except MaintenanceException: errors["base"] = "server_in_maintenance" except Exception as exception: # pylint: disable=broad-except errors["base"] = "unknown" _LOGGER.exception(exception) else: self._abort_if_unique_id_configured() return self.async_create_entry(title=user_input[CONF_USERNAME], data=user_input) return self.async_show_form( step_id="user", data_schema=vol.Schema({ vol.Required(CONF_USERNAME): str, vol.Required(CONF_PASSWORD): str, vol.Required(CONF_HUB, default=DEFAULT_HUB): vol.In( {key: hub.name for key, hub in SUPPORTED_SERVERS.items()}), }), errors=errors, )
async def async_step_user(self, user_input: dict[str, Any] | None = None ) -> FlowResult: """Handle the initial step via config flow.""" errors = {} if user_input: self._default_user = user_input[CONF_USERNAME] self._default_hub = user_input[CONF_HUB] try: await self.async_validate_input(user_input) except TooManyRequestsException: errors["base"] = "too_many_requests" except BadCredentialsException: errors["base"] = "invalid_auth" except (TimeoutError, ClientError): errors["base"] = "cannot_connect" except MaintenanceException: errors["base"] = "server_in_maintenance" except TooManyAttemptsBannedException: errors["base"] = "too_many_attempts" except Exception as exception: # pylint: disable=broad-except errors["base"] = "unknown" LOGGER.exception(exception) else: if self._config_entry: if self._config_entry.unique_id != self.unique_id: return self.async_abort(reason="reauth_wrong_account") # Update existing entry during reauth self.hass.config_entries.async_update_entry( self._config_entry, data={ **self._config_entry.data, **user_input, }, ) self.hass.async_create_task( self.hass.config_entries.async_reload( self._config_entry.entry_id)) return self.async_abort(reason="reauth_successful") # Create new entry self._abort_if_unique_id_configured() return self.async_create_entry(title=user_input[CONF_USERNAME], data=user_input) return self.async_show_form( step_id="user", data_schema=vol.Schema({ vol.Required(CONF_USERNAME, default=self._default_user): str, vol.Required(CONF_PASSWORD): str, vol.Required(CONF_HUB, default=self._default_hub): vol.In( {key: hub.name for key, hub in SUPPORTED_SERVERS.items()}), }), errors=errors, )