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__) _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.""" """Set up the Islamic Prayer Component."""
@callback @callback
@ -37,7 +41,7 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
coordinator = IslamicPrayerDataUpdateCoordinator(hass) coordinator = IslamicPrayerDataUpdateCoordinator(hass)
await coordinator.async_config_entry_first_refresh() 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.async_on_unload(
config_entry.add_update_listener(async_options_updated) config_entry.add_update_listener(async_options_updated)
) )
@ -72,24 +76,24 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
return True 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.""" """Unload Islamic Prayer entry from config_entry."""
if unload_ok := await hass.config_entries.async_unload_platforms( if unload_ok := await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS config_entry, PLATFORMS
): ):
coordinator: IslamicPrayerDataUpdateCoordinator = hass.data[DOMAIN].pop( coordinator = config_entry.runtime_data
config_entry.entry_id
)
if coordinator.event_unsub: if coordinator.event_unsub:
coordinator.event_unsub() coordinator.event_unsub()
if not hass.data[DOMAIN]:
del hass.data[DOMAIN]
return unload_ok 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.""" """Triggered by config entry options updates."""
coordinator: IslamicPrayerDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
if coordinator.event_unsub: if coordinator.event_unsub:
coordinator.event_unsub() coordinator.event_unsub()
await coordinator.async_request_refresh() await coordinator.async_request_refresh()

View File

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