Use runtime_data in fireservicerota (#138361)

This commit is contained in:
epenet 2025-02-12 12:49:26 +01:00 committed by GitHub
parent ef9d5dd568
commit e12b100a37
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 40 additions and 39 deletions

View File

@ -4,23 +4,23 @@ from __future__ import annotations
from datetime import timedelta
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from .const import DATA_CLIENT, DATA_COORDINATOR, DOMAIN
from .coordinator import FireServiceRotaClient, FireServiceUpdateCoordinator
from .coordinator import (
FireServiceConfigEntry,
FireServiceRotaClient,
FireServiceUpdateCoordinator,
)
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60)
PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR, Platform.SWITCH]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: FireServiceConfigEntry) -> bool:
"""Set up FireServiceRota from a config entry."""
hass.data.setdefault(DOMAIN, {})
client = FireServiceRotaClient(hass, entry)
await client.setup()
@ -32,19 +32,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][entry.entry_id] = {
DATA_CLIENT: client,
DATA_COORDINATOR: 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: FireServiceConfigEntry
) -> bool:
"""Unload FireServiceRota config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
del hass.data[DOMAIN][entry.entry_id]
return unload_ok
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@ -10,24 +10,22 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DATA_CLIENT, DATA_COORDINATOR, DOMAIN as FIRESERVICEROTA_DOMAIN
from .coordinator import FireServiceRotaClient, FireServiceUpdateCoordinator
from .coordinator import (
FireServiceConfigEntry,
FireServiceRotaClient,
FireServiceUpdateCoordinator,
)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FireServiceConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up FireServiceRota binary sensor based on a config entry."""
client: FireServiceRotaClient = hass.data[FIRESERVICEROTA_DOMAIN][entry.entry_id][
DATA_CLIENT
]
coordinator: FireServiceUpdateCoordinator = hass.data[FIRESERVICEROTA_DOMAIN][
entry.entry_id
][DATA_COORDINATOR]
coordinator = entry.runtime_data
client = coordinator.client
async_add_entities([ResponseBinarySensor(coordinator, client, entry)])

View File

@ -28,12 +28,19 @@ _LOGGER = logging.getLogger(__name__)
PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR, Platform.SWITCH]
type FireServiceConfigEntry = ConfigEntry[FireServiceUpdateCoordinator]
class FireServiceUpdateCoordinator(DataUpdateCoordinator[dict | None]):
"""Data update coordinator for FireServiceRota."""
config_entry: FireServiceConfigEntry
def __init__(
self, hass: HomeAssistant, client: FireServiceRotaClient, entry: ConfigEntry
self,
hass: HomeAssistant,
client: FireServiceRotaClient,
entry: FireServiceConfigEntry,
) -> None:
"""Initialize the FireServiceRota DataUpdateCoordinator."""
super().__init__(

View File

@ -4,27 +4,24 @@ import logging
from typing import Any
from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.restore_state import RestoreEntity
from .const import DATA_CLIENT, DOMAIN as FIRESERVICEROTA_DOMAIN
from .coordinator import FireServiceRotaClient
from .const import DOMAIN as FIRESERVICEROTA_DOMAIN
from .coordinator import FireServiceConfigEntry, FireServiceRotaClient
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FireServiceConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up FireServiceRota sensor based on a config entry."""
client = hass.data[FIRESERVICEROTA_DOMAIN][entry.entry_id][DATA_CLIENT]
async_add_entities([IncidentsSensor(client)])
async_add_entities([IncidentsSensor(entry.runtime_data.client)])
# pylint: disable-next=hass-invalid-inheritance # needs fixing

View File

@ -9,21 +9,24 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .const import DATA_CLIENT, DATA_COORDINATOR, DOMAIN as FIRESERVICEROTA_DOMAIN
from .coordinator import FireServiceRotaClient, FireServiceUpdateCoordinator
from .const import DOMAIN as FIRESERVICEROTA_DOMAIN
from .coordinator import (
FireServiceConfigEntry,
FireServiceRotaClient,
FireServiceUpdateCoordinator,
)
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: FireServiceConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up FireServiceRota switch based on a config entry."""
client = hass.data[FIRESERVICEROTA_DOMAIN][entry.entry_id][DATA_CLIENT]
coordinator = hass.data[FIRESERVICEROTA_DOMAIN][entry.entry_id][DATA_COORDINATOR]
coordinator = entry.runtime_data
client = coordinator.client
async_add_entities([ResponseSwitch(coordinator, client, entry)])