Răsfoiți Sursa

Preserve username on auth failure; only clear password

ZiB 4 luni în urmă
părinte
comite
eb1d2c054e
1 a modificat fișierele cu 6 adăugiri și 3 ștergeri
  1. 6 3
      custom_components/room_cal_ha/config_flow.py

+ 6 - 3
custom_components/room_cal_ha/config_flow.py

@@ -84,9 +84,13 @@ class RoomCalConfigFlow(ConfigFlow, domain=DOMAIN):
 
 class RoomCalOptionsFlow(OptionsFlow):
 
+  def __init__(self) -> None:
+    self._username: str = ""
+
   async def async_step_init(
     self, user_input: dict[str, Any] | None = None
   ) -> ConfigFlowResult:
+    self._username = self.config_entry.data.get(CONF_USERNAME, "")
     return await self.async_step_caldav()
 
   async def async_step_caldav(
@@ -95,7 +99,7 @@ class RoomCalOptionsFlow(OptionsFlow):
     errors: dict[str, str] = {}
 
     if user_input is not None:
-      username = user_input.pop(CONF_USERNAME, "") or self.config_entry.data.get(CONF_USERNAME, "")
+      self._username = user_input.pop(CONF_USERNAME, "") or self.config_entry.data.get(CONF_USERNAME, "")
       password = user_input.pop(CONF_PASSWORD, "") or self.config_entry.data.get(CONF_PASSWORD, "")
 
       if user_input.get(CONF_CALDAV_ENABLED) and user_input.get(CONF_CALDAV_URL):
@@ -120,14 +124,13 @@ class RoomCalOptionsFlow(OptionsFlow):
       return self.async_create_entry(data=merged)
 
     opts = self.config_entry.options
-    data = self.config_entry.data
     return self.async_show_form(
       step_id="caldav",
       data_schema=vol.Schema({
         vol.Required(CONF_CALDAV_ENABLED, default=opts.get(CONF_CALDAV_ENABLED, False)): BooleanSelector(),
         vol.Optional(CONF_CALDAV_URL, default=opts.get(CONF_CALDAV_URL, "")): str,
         vol.Optional(CONF_CALENDAR_NAME, default=opts.get(CONF_CALENDAR_NAME, "")): str,
-        vol.Optional(CONF_USERNAME, default=data.get(CONF_USERNAME, "")): str,
+        vol.Optional(CONF_USERNAME, default=self._username): str,
         vol.Optional(CONF_PASSWORD, default=""): TextSelector(
           TextSelectorConfig(type=TextSelectorType.PASSWORD)
         ),