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__)
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."""
# 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()
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: NextcloudConfigEntry) -> bool:
"""Unload Nextcloud integration."""
if unload_ok := 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
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

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

View File

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

View File

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

View File

@ -3,20 +3,20 @@
from __future__ import annotations
from homeassistant.components.update import UpdateEntity, UpdateEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from .coordinator import NextcloudDataUpdateCoordinator
from . import NextcloudConfigEntry
from .entity import NextcloudEntity
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: NextcloudConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""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:
return
async_add_entities(