diff --git a/homeassistant/components/qnap/__init__.py b/homeassistant/components/qnap/__init__.py index 82e912a60cd1..3315eadac766 100644 --- a/homeassistant/components/qnap/__init__.py +++ b/homeassistant/components/qnap/__init__.py @@ -2,33 +2,27 @@ 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 QnapCoordinator +from .coordinator import QnapConfigEntry, QnapCoordinator PLATFORMS: list[Platform] = [ Platform.SENSOR, ] -async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, config_entry: QnapConfigEntry) -> bool: """Set the config entry up.""" - hass.data.setdefault(DOMAIN, {}) coordinator = QnapCoordinator(hass, config_entry) - # Fetch initial data so we have data when entities subscribe await coordinator.async_config_entry_first_refresh() - hass.data[DOMAIN][config_entry.entry_id] = coordinator + config_entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS) return True -async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: +async def async_unload_entry( + hass: HomeAssistant, config_entry: QnapConfigEntry +) -> bool: """Unload a config entry.""" - if unload_ok := await hass.config_entries.async_unload_platforms( - config_entry, PLATFORMS - ): - hass.data[DOMAIN].pop(config_entry.entry_id) - return unload_ok + return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS) diff --git a/homeassistant/components/qnap/coordinator.py b/homeassistant/components/qnap/coordinator.py index 8b6cb930b4ff..8351727183cb 100644 --- a/homeassistant/components/qnap/coordinator.py +++ b/homeassistant/components/qnap/coordinator.py @@ -26,6 +26,8 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator from .const import DOMAIN +type QnapConfigEntry = ConfigEntry[QnapCoordinator] + UPDATE_INTERVAL = timedelta(minutes=1) _LOGGER = logging.getLogger(__name__) @@ -46,7 +48,9 @@ def suppress_insecure_request_warning(): class QnapCoordinator(DataUpdateCoordinator[dict[str, dict[str, Any]]]): """Custom coordinator for the qnap integration.""" - def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None: + config_entry: QnapConfigEntry + + def __init__(self, hass: HomeAssistant, config_entry: QnapConfigEntry) -> None: """Initialize the qnap coordinator.""" super().__init__( hass, diff --git a/homeassistant/components/qnap/sensor.py b/homeassistant/components/qnap/sensor.py index 381455cb7e17..8f47ebf1428f 100644 --- a/homeassistant/components/qnap/sensor.py +++ b/homeassistant/components/qnap/sensor.py @@ -5,7 +5,6 @@ from __future__ import annotations from datetime import timedelta from typing import Any -from homeassistant import config_entries from homeassistant.components.sensor import ( SensorDeviceClass, SensorEntity, @@ -20,14 +19,13 @@ from homeassistant.const import ( UnitOfTemperature, ) from homeassistant.core import HomeAssistant -from homeassistant.exceptions import PlatformNotReady from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.util import dt as dt_util from .const import DOMAIN -from .coordinator import QnapCoordinator +from .coordinator import QnapConfigEntry, QnapCoordinator ATTR_DRIVE = "Drive" ATTR_IP = "IP Address" @@ -247,14 +245,11 @@ SENSOR_KEYS: list[str] = [ async def async_setup_entry( hass: HomeAssistant, - config_entry: config_entries.ConfigEntry, + config_entry: QnapConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Set up entry.""" - coordinator = QnapCoordinator(hass, config_entry) - await coordinator.async_refresh() - if not coordinator.last_update_success: - raise PlatformNotReady + coordinator = config_entry.runtime_data uid = config_entry.unique_id assert uid is not None sensors: list[QNAPSensor] = []