Fix config flow issue

This commit is contained in:
2025-08-17 20:26:04 +10:00
parent 02380cd0d9
commit 3d89c4225e
3 changed files with 47 additions and 23 deletions

View File

@@ -8,7 +8,7 @@ from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
from .const import DOMAIN, PLATFORMS from .const import DOMAIN
from .coordinator import MedMateDataUpdateCoordinator from .coordinator import MedMateDataUpdateCoordinator
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@@ -23,24 +23,32 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up MedMate from a config entry.""" """Set up MedMate from a config entry."""
coordinator = MedMateDataUpdateCoordinator(hass, entry) try:
coordinator = MedMateDataUpdateCoordinator(hass, entry)
await coordinator.async_config_entry_first_refresh()
await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
return True
except Exception as err:
_LOGGER.error("Error setting up MedMate integration: %s", err)
return False
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): try:
hass.data[DOMAIN].pop(entry.entry_id) if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
return unload_ok
except Exception as err:
_LOGGER.error("Error unloading MedMate integration: %s", err)
return False
async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:

View File

@@ -108,11 +108,19 @@ class MedMateConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
} }
return await self.async_step_prescription() return await self.async_step_prescription()
# Create day options dict
day_options = {}
for day in DAYS_OF_WEEK:
day_options[day] = day.title()
# Create time options dict
time_options = {}
for key, value in TIME_SLOTS.items():
time_options[key] = value
schema = vol.Schema({ schema = vol.Schema({
vol.Required(CONF_DAYS, default=DAYS_OF_WEEK): cv.multi_select( vol.Required(CONF_DAYS, default=DAYS_OF_WEEK): cv.multi_select(day_options),
{day: day.title() for day in DAYS_OF_WEEK} vol.Required(CONF_TIMES, default=["morning"]): cv.multi_select(time_options),
),
vol.Required(CONF_TIMES, default=["morning"]): cv.multi_select(TIME_SLOTS),
}) })
return self.async_show_form( return self.async_show_form(
@@ -259,15 +267,25 @@ class MedMateOptionsFlow(config_entries.OptionsFlow):
} }
return await self.async_step_prescription() return await self.async_step_prescription()
# Create day options dict
day_options = {}
for day in DAYS_OF_WEEK:
day_options[day] = day.title()
# Create time options dict
time_options = {}
for key, value in TIME_SLOTS.items():
time_options[key] = value
schema = vol.Schema({ schema = vol.Schema({
vol.Required( vol.Required(
CONF_DAYS, CONF_DAYS,
default=current_schedule.get(CONF_DAYS, DAYS_OF_WEEK) default=current_schedule.get(CONF_DAYS, DAYS_OF_WEEK)
): cv.multi_select({day: day.title() for day in DAYS_OF_WEEK}), ): cv.multi_select(day_options),
vol.Required( vol.Required(
CONF_TIMES, CONF_TIMES,
default=current_schedule.get(CONF_TIMES, ["morning"]) default=current_schedule.get(CONF_TIMES, ["morning"])
): cv.multi_select(TIME_SLOTS), ): cv.multi_select(time_options),
}) })
return self.async_show_form( return self.async_show_form(

View File

@@ -1,8 +1,6 @@
"""Constants for the MedMate integration.""" """Constants for the MedMate integration."""
from homeassistant.const import Platform
DOMAIN = "medmate" DOMAIN = "medmate"
PLATFORMS = [Platform.SENSOR, Platform.BINARY_SENSOR, Platform.BUTTON]
# Configuration keys # Configuration keys
CONF_MEDICINES = "medicines" CONF_MEDICINES = "medicines"