diff --git a/homeassistant/components/comelit/config_flow.py b/homeassistant/components/comelit/config_flow.py index dd94fa62988..2486fb6042f 100644 --- a/homeassistant/components/comelit/config_flow.py +++ b/homeassistant/components/comelit/config_flow.py @@ -37,13 +37,6 @@ USER_SCHEMA = vol.Schema( } ) STEP_REAUTH_DATA_SCHEMA = vol.Schema({vol.Required(CONF_PIN): cv.string}) -STEP_RECONFIGURE = vol.Schema( - { - vol.Required(CONF_HOST): cv.string, - vol.Required(CONF_PORT): cv.port, - vol.Optional(CONF_PIN, default=DEFAULT_PIN): cv.string, - } -) async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, str]: @@ -175,36 +168,55 @@ class ComelitConfigFlow(ConfigFlow, domain=DOMAIN): ) -> ConfigFlowResult: """Handle reconfiguration of the device.""" reconfigure_entry = self._get_reconfigure_entry() - if not user_input: - return self.async_show_form( - step_id="reconfigure", data_schema=STEP_RECONFIGURE - ) - - updated_host = user_input[CONF_HOST] - - self._async_abort_entries_match({CONF_HOST: updated_host}) - errors: dict[str, str] = {} - try: - await validate_input(self.hass, user_input) - except CannotConnect: - errors["base"] = "cannot_connect" - except InvalidAuth: - errors["base"] = "invalid_auth" - except InvalidPin: - errors["base"] = "invalid_pin" - except Exception: # noqa: BLE001 - _LOGGER.exception("Unexpected exception") - errors["base"] = "unknown" - else: - return self.async_update_reload_and_abort( - reconfigure_entry, data_updates={CONF_HOST: updated_host} - ) + if user_input is not None: + updated_host = user_input[CONF_HOST] + + self._async_abort_entries_match({CONF_HOST: updated_host}) + + try: + data_to_validate = { + CONF_HOST: updated_host, + CONF_PORT: user_input[CONF_PORT], + CONF_PIN: user_input[CONF_PIN], + CONF_TYPE: reconfigure_entry.data.get(CONF_TYPE, BRIDGE), + } + await validate_input(self.hass, data_to_validate) + except CannotConnect: + errors["base"] = "cannot_connect" + except InvalidAuth: + errors["base"] = "invalid_auth" + except InvalidPin: + errors["base"] = "invalid_pin" + except Exception: # noqa: BLE001 + _LOGGER.exception("Unexpected exception") + errors["base"] = "unknown" + else: + data_updates = { + CONF_HOST: updated_host, + CONF_PORT: user_input[CONF_PORT], + CONF_PIN: user_input[CONF_PIN], + } + return self.async_update_reload_and_abort( + reconfigure_entry, data_updates=data_updates + ) + + schema = vol.Schema( + { + vol.Required( + CONF_HOST, default=reconfigure_entry.data[CONF_HOST] + ): cv.string, + vol.Required( + CONF_PORT, default=reconfigure_entry.data[CONF_PORT] + ): cv.port, + vol.Optional(CONF_PIN): cv.string, + } + ) return self.async_show_form( step_id="reconfigure", - data_schema=STEP_RECONFIGURE, + data_schema=schema, errors=errors, )