From 1f35451863863142b50aa94055b82519564c0b1e Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:24:03 +0100 Subject: [PATCH] Use runtime_data in epic_games_store (#136709) --- .../components/epic_games_store/__init__.py | 15 +++++---------- .../components/epic_games_store/calendar.py | 7 +++---- .../components/epic_games_store/coordinator.py | 5 ++++- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/epic_games_store/__init__.py b/homeassistant/components/epic_games_store/__init__.py index af25eb98137..d9fb3bee529 100644 --- a/homeassistant/components/epic_games_store/__init__.py +++ b/homeassistant/components/epic_games_store/__init__.py @@ -2,34 +2,29 @@ from __future__ import annotations -from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant -from .const import DOMAIN -from .coordinator import EGSCalendarUpdateCoordinator +from .coordinator import EGSCalendarUpdateCoordinator, EGSConfigEntry PLATFORMS: list[Platform] = [ Platform.CALENDAR, ] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: EGSConfigEntry) -> bool: """Set up Epic Games Store from a config entry.""" coordinator = EGSCalendarUpdateCoordinator(hass, entry) await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: EGSConfigEntry) -> bool: """Unload a config entry.""" - if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): - hass.data[DOMAIN].pop(entry.entry_id) - - return unload_ok + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/epic_games_store/calendar.py b/homeassistant/components/epic_games_store/calendar.py index 2ebb381341e..5df1d6b756d 100644 --- a/homeassistant/components/epic_games_store/calendar.py +++ b/homeassistant/components/epic_games_store/calendar.py @@ -7,25 +7,24 @@ from datetime import datetime from typing import Any from homeassistant.components.calendar import CalendarEntity, CalendarEvent -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 .const import DOMAIN, CalendarType -from .coordinator import EGSCalendarUpdateCoordinator +from .coordinator import EGSCalendarUpdateCoordinator, EGSConfigEntry DateRange = namedtuple("DateRange", ["start", "end"]) # noqa: PYI024 async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: EGSConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Set up the local calendar platform.""" - coordinator: EGSCalendarUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] + coordinator = entry.runtime_data entities = [ EGSCalendar(coordinator, entry.entry_id, CalendarType.FREE), diff --git a/homeassistant/components/epic_games_store/coordinator.py b/homeassistant/components/epic_games_store/coordinator.py index d9c48f5da02..0653a3da9b3 100644 --- a/homeassistant/components/epic_games_store/coordinator.py +++ b/homeassistant/components/epic_games_store/coordinator.py @@ -20,13 +20,15 @@ SCAN_INTERVAL = timedelta(days=1) _LOGGER = logging.getLogger(__name__) +type EGSConfigEntry = ConfigEntry[EGSCalendarUpdateCoordinator] + class EGSCalendarUpdateCoordinator( DataUpdateCoordinator[dict[str, list[dict[str, Any]]]] ): """Class to manage fetching data from the Epic Game Store.""" - def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None: + def __init__(self, hass: HomeAssistant, entry: EGSConfigEntry) -> None: """Initialize.""" self._api = EpicGamesStoreAPI( entry.data[CONF_LANGUAGE], @@ -37,6 +39,7 @@ class EGSCalendarUpdateCoordinator( super().__init__( hass, _LOGGER, + config_entry=entry, name=DOMAIN, update_interval=SCAN_INTERVAL, )