Use new helper properties in crownstone options flow (#129774)

This commit is contained in:
epenet 2024-11-04 09:43:25 +01:00 committed by GitHub
parent 3a293c6bc4
commit 018acc0a3c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -143,7 +143,7 @@ class CrownstoneConfigFlowHandler(BaseCrownstoneFlowHandler, ConfigFlow, domain=
config_entry: ConfigEntry, config_entry: ConfigEntry,
) -> CrownstoneOptionsFlowHandler: ) -> CrownstoneOptionsFlowHandler:
"""Return the Crownstone options.""" """Return the Crownstone options."""
return CrownstoneOptionsFlowHandler(config_entry) return CrownstoneOptionsFlowHandler()
def __init__(self) -> None: def __init__(self) -> None:
"""Initialize the flow.""" """Initialize the flow."""
@ -210,21 +210,21 @@ class CrownstoneConfigFlowHandler(BaseCrownstoneFlowHandler, ConfigFlow, domain=
class CrownstoneOptionsFlowHandler(BaseCrownstoneFlowHandler, OptionsFlow): class CrownstoneOptionsFlowHandler(BaseCrownstoneFlowHandler, OptionsFlow):
"""Handle Crownstone options.""" """Handle Crownstone options."""
def __init__(self, config_entry: ConfigEntry) -> None: def __init__(self) -> None:
"""Initialize Crownstone options.""" """Initialize Crownstone options."""
super().__init__(OPTIONS_FLOW, self.async_create_new_entry) super().__init__(OPTIONS_FLOW, self.async_create_new_entry)
self.entry = config_entry
self.updated_options = config_entry.options.copy()
async def async_step_init( async def async_step_init(
self, user_input: dict[str, Any] | None = None self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult: ) -> ConfigFlowResult:
"""Manage Crownstone options.""" """Manage Crownstone options."""
self.cloud: CrownstoneCloud = self.hass.data[DOMAIN][self.entry.entry_id].cloud self.cloud: CrownstoneCloud = self.hass.data[DOMAIN][
self.config_entry.entry_id
].cloud
spheres = {sphere.name: sphere.cloud_id for sphere in self.cloud.cloud_data} spheres = {sphere.name: sphere.cloud_id for sphere in self.cloud.cloud_data}
usb_path = self.entry.options.get(CONF_USB_PATH) usb_path = self.config_entry.options.get(CONF_USB_PATH)
usb_sphere = self.entry.options.get(CONF_USB_SPHERE) usb_sphere = self.config_entry.options.get(CONF_USB_SPHERE)
options_schema = vol.Schema( options_schema = vol.Schema(
{vol.Optional(CONF_USE_USB_OPTION, default=usb_path is not None): bool} {vol.Optional(CONF_USE_USB_OPTION, default=usb_path is not None): bool}
@ -243,14 +243,14 @@ class CrownstoneOptionsFlowHandler(BaseCrownstoneFlowHandler, OptionsFlow):
if user_input[CONF_USE_USB_OPTION] and usb_path is None: if user_input[CONF_USE_USB_OPTION] and usb_path is None:
return await self.async_step_usb_config() return await self.async_step_usb_config()
if not user_input[CONF_USE_USB_OPTION] and usb_path is not None: if not user_input[CONF_USE_USB_OPTION] and usb_path is not None:
self.updated_options[CONF_USB_PATH] = None self.options[CONF_USB_PATH] = None
self.updated_options[CONF_USB_SPHERE] = None self.options[CONF_USB_SPHERE] = None
elif ( elif (
CONF_USB_SPHERE_OPTION in user_input CONF_USB_SPHERE_OPTION in user_input
and spheres[user_input[CONF_USB_SPHERE_OPTION]] != usb_sphere and spheres[user_input[CONF_USB_SPHERE_OPTION]] != usb_sphere
): ):
sphere_id = spheres[user_input[CONF_USB_SPHERE_OPTION]] sphere_id = spheres[user_input[CONF_USB_SPHERE_OPTION]]
self.updated_options[CONF_USB_SPHERE] = sphere_id self.options[CONF_USB_SPHERE] = sphere_id
return self.async_create_new_entry() return self.async_create_new_entry()
@ -260,7 +260,7 @@ class CrownstoneOptionsFlowHandler(BaseCrownstoneFlowHandler, OptionsFlow):
"""Create a new entry.""" """Create a new entry."""
# these attributes will only change when a usb was configured # these attributes will only change when a usb was configured
if self.usb_path is not None and self.usb_sphere_id is not None: if self.usb_path is not None and self.usb_sphere_id is not None:
self.updated_options[CONF_USB_PATH] = self.usb_path self.options[CONF_USB_PATH] = self.usb_path
self.updated_options[CONF_USB_SPHERE] = self.usb_sphere_id self.options[CONF_USB_SPHERE] = self.usb_sphere_id
return super().async_create_entry(title="", data=self.updated_options) return super().async_create_entry(title="", data=self.options)