Store runtime data inside the config entry in Nextcloud (#116790)

This commit is contained in:
Michael 2024-05-04 19:03:25 +02:00 committed by GitHub
parent 831282c3ba
commit ec46d4d644
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 23 additions and 25 deletions

View File

@ -30,8 +30,10 @@ CONFIG_SCHEMA = cv.removed(DOMAIN, raise_if_present=False)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
NextcloudConfigEntry = ConfigEntry[NextcloudDataUpdateCoordinator]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: NextcloudConfigEntry) -> bool:
"""Set up the Nextcloud integration.""" """Set up the Nextcloud integration."""
# migrate old entity unique ids # migrate old entity unique ids
@ -71,17 +73,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await coordinator.async_config_entry_first_refresh() 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) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: NextcloudConfigEntry) -> bool:
"""Unload Nextcloud integration.""" """Unload Nextcloud integration."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
hass.data[DOMAIN].pop(entry.entry_id)
if not hass.data[DOMAIN]:
hass.data.pop(DOMAIN)
return unload_ok

View File

@ -8,13 +8,11 @@ from homeassistant.components.binary_sensor import (
BinarySensorEntity, BinarySensorEntity,
BinarySensorEntityDescription, BinarySensorEntityDescription,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import NextcloudConfigEntry
from .coordinator import NextcloudDataUpdateCoordinator
from .entity import NextcloudEntity from .entity import NextcloudEntity
BINARY_SENSORS: Final[list[BinarySensorEntityDescription]] = [ BINARY_SENSORS: Final[list[BinarySensorEntityDescription]] = [
@ -54,10 +52,12 @@ BINARY_SENSORS: Final[list[BinarySensorEntityDescription]] = [
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: NextcloudConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Nextcloud binary sensors.""" """Set up the Nextcloud binary sensors."""
coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
async_add_entities( async_add_entities(
NextcloudBinarySensor(coordinator, entry, sensor) NextcloudBinarySensor(coordinator, entry, sensor)
for sensor in BINARY_SENSORS for sensor in BINARY_SENSORS

View File

@ -2,11 +2,11 @@
from urllib.parse import urlparse from urllib.parse import urlparse
from homeassistant.config_entries import ConfigEntry
from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import NextcloudConfigEntry
from .const import DOMAIN from .const import DOMAIN
from .coordinator import NextcloudDataUpdateCoordinator from .coordinator import NextcloudDataUpdateCoordinator
@ -19,7 +19,7 @@ class NextcloudEntity(CoordinatorEntity[NextcloudDataUpdateCoordinator]):
def __init__( def __init__(
self, self,
coordinator: NextcloudDataUpdateCoordinator, coordinator: NextcloudDataUpdateCoordinator,
entry: ConfigEntry, entry: NextcloudConfigEntry,
description: EntityDescription, description: EntityDescription,
) -> None: ) -> None:
"""Initialize the Nextcloud sensor.""" """Initialize the Nextcloud sensor."""

View File

@ -13,7 +13,6 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
PERCENTAGE, PERCENTAGE,
EntityCategory, EntityCategory,
@ -24,8 +23,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util.dt import utc_from_timestamp from homeassistant.util.dt import utc_from_timestamp
from .const import DOMAIN from . import NextcloudConfigEntry
from .coordinator import NextcloudDataUpdateCoordinator
from .entity import NextcloudEntity from .entity import NextcloudEntity
UNIT_OF_LOAD: Final[str] = "load" UNIT_OF_LOAD: Final[str] = "load"
@ -602,10 +600,12 @@ SENSORS: Final[list[NextcloudSensorEntityDescription]] = [
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: NextcloudConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Nextcloud sensors.""" """Set up the Nextcloud sensors."""
coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
async_add_entities( async_add_entities(
NextcloudSensor(coordinator, entry, sensor) NextcloudSensor(coordinator, entry, sensor)
for sensor in SENSORS for sensor in SENSORS

View File

@ -3,20 +3,20 @@
from __future__ import annotations from __future__ import annotations
from homeassistant.components.update import UpdateEntity, UpdateEntityDescription from homeassistant.components.update import UpdateEntity, UpdateEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from . import NextcloudConfigEntry
from .coordinator import NextcloudDataUpdateCoordinator
from .entity import NextcloudEntity from .entity import NextcloudEntity
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: NextcloudConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up the Nextcloud update entity.""" """Set up the Nextcloud update entity."""
coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
if coordinator.data.get("update_available") is None: if coordinator.data.get("update_available") is None:
return return
async_add_entities( async_add_entities(