Store islamic prayer times coordinator in runtime_data (#119612)

This commit is contained in:
Rami Mosleh 2024-06-13 17:54:40 +03:00 committed by GitHub
parent 23edbf7bbf
commit f2ce510484
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 17 deletions

View File

@ -18,8 +18,12 @@ CONFIG_SCHEMA = cv.removed(DOMAIN, raise_if_present=False)
_LOGGER = logging.getLogger(__name__)
type IslamicPrayerTimesConfigEntry = ConfigEntry[IslamicPrayerDataUpdateCoordinator]
async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_setup_entry(
hass: HomeAssistant, config_entry: IslamicPrayerTimesConfigEntry
) -> bool:
"""Set up the Islamic Prayer Component."""
@callback
@ -37,7 +41,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
coordinator = IslamicPrayerDataUpdateCoordinator(hass)
await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})[config_entry.entry_id] = coordinator
config_entry.runtime_data = coordinator
config_entry.async_on_unload(
config_entry.add_update_listener(async_options_updated)
)
@ -72,24 +76,24 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
return True
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, config_entry: IslamicPrayerTimesConfigEntry
) -> bool:
"""Unload Islamic Prayer entry from config_entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
):
coordinator: IslamicPrayerDataUpdateCoordinator = hass.data[DOMAIN].pop(
config_entry.entry_id
)
coordinator = config_entry.runtime_data
if coordinator.event_unsub:
coordinator.event_unsub()
if not hass.data[DOMAIN]:
del hass.data[DOMAIN]
return unload_ok
async def async_options_updated(hass: HomeAssistant, entry: ConfigEntry) -> None:
async def async_options_updated(
hass: HomeAssistant, entry: IslamicPrayerTimesConfigEntry
) -> None:
"""Triggered by config entry options updates."""
coordinator: IslamicPrayerDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator = entry.runtime_data
if coordinator.event_unsub:
coordinator.event_unsub()
await coordinator.async_request_refresh()

View File

@ -7,14 +7,14 @@ from homeassistant.components.sensor import (
SensorEntity,
SensorEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import IslamicPrayerDataUpdateCoordinator
from . import IslamicPrayerTimesConfigEntry
from .const import DOMAIN, NAME
from .coordinator import IslamicPrayerDataUpdateCoordinator
SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
@ -50,15 +50,12 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: IslamicPrayerTimesConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Islamic prayer times sensor platform."""
coordinator: IslamicPrayerDataUpdateCoordinator = hass.data[DOMAIN][
config_entry.entry_id
]
coordinator = config_entry.runtime_data
async_add_entities(
IslamicPrayerTimeSensor(coordinator, description)
for description in SENSOR_TYPES