Updated apps
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
"""Options flow for Amazon Order Status integration."""
|
||||
|
||||
from homeassistant import config_entries
|
||||
import voluptuous as vol
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
|
||||
from .const import DOMAIN, CONF_IMAP_FOLDER
|
||||
|
||||
|
||||
class AmazonOrderStatusOptionsFlow(config_entries.OptionsFlow):
|
||||
"""Handle an options flow for Amazon Order Status."""
|
||||
|
||||
def __init__(self, config_entry: config_entries.ConfigEntry):
|
||||
self._config_entry = config_entry
|
||||
|
||||
async def async_step_init(self, user_input=None):
|
||||
"""Manage the initial step of the options flow."""
|
||||
if user_input is not None:
|
||||
# Merge new options with existing ones
|
||||
new_options = dict(self._config_entry.options)
|
||||
new_options.update(user_input)
|
||||
|
||||
# Update the config entry
|
||||
self.hass.config_entries.async_update_entry(
|
||||
self._config_entry, options=new_options
|
||||
)
|
||||
|
||||
# Apply updates to the coordinator if it exists
|
||||
coordinator = self.hass.data.get(DOMAIN, {}).get("coordinator")
|
||||
if coordinator:
|
||||
if "delivered_retention_days" in user_input:
|
||||
coordinator.async_set_retention_days(
|
||||
user_input["delivered_retention_days"]
|
||||
)
|
||||
if "update_interval" in user_input:
|
||||
coordinator.async_update_interval(
|
||||
user_input["update_interval"]
|
||||
)
|
||||
if "mark_as_read" in user_input:
|
||||
coordinator.async_set_mark_as_read(
|
||||
user_input["mark_as_read"]
|
||||
)
|
||||
if CONF_IMAP_FOLDER in user_input:
|
||||
coordinator.async_set_imap_folder(
|
||||
user_input[CONF_IMAP_FOLDER]
|
||||
)
|
||||
|
||||
return self.async_create_entry(title="", data=user_input)
|
||||
|
||||
# Current options to use as defaults
|
||||
options = self._config_entry.options
|
||||
|
||||
# Standard vol.Schema
|
||||
schema = vol.Schema(
|
||||
{
|
||||
vol.Required(
|
||||
"delivered_retention_days",
|
||||
default=options.get("delivered_retention_days", 30),
|
||||
): cv.positive_int,
|
||||
vol.Required(
|
||||
"update_interval",
|
||||
default=options.get("update_interval", 5),
|
||||
): cv.positive_int,
|
||||
vol.Required(
|
||||
"mark_as_read",
|
||||
default=options.get("mark_as_read", True),
|
||||
): cv.boolean,
|
||||
vol.Optional(
|
||||
CONF_IMAP_FOLDER,
|
||||
default=options.get(CONF_IMAP_FOLDER, ""),
|
||||
): str,
|
||||
}
|
||||
)
|
||||
|
||||
return self.async_show_form(
|
||||
step_id="init",
|
||||
data_schema=schema,
|
||||
)
|
||||
Reference in New Issue
Block a user