feat: merge coordinators to have less duplicate code

This commit is contained in:
Xavier Morel
2025-03-24 21:42:28 +01:00
parent 987d3ded47
commit 27c59cf736
4 changed files with 69 additions and 74 deletions

View File

@@ -18,8 +18,9 @@ from .const import (
ECOCITO_REFRESH_MIN_KEY,
)
from .coordinator import (
GarbageCollectionsDataUpdateCoordinator,
RecyclingCollectionsDataUpdateCoordinator,
CollectionDataUpdateCoordinator,
# GarbageCollectionsDataUpdateCoordinator,
# RecyclingCollectionsDataUpdateCoordinator,
WasteDepotVisitsDataUpdateCoordinator,
)
@@ -30,10 +31,12 @@ PLATFORMS: list[Platform] = [Platform.SENSOR]
class EcocitoData:
"""Ecocito data type."""
garbage_collections: GarbageCollectionsDataUpdateCoordinator
garbage_collections_previous: GarbageCollectionsDataUpdateCoordinator
recycling_collections: RecyclingCollectionsDataUpdateCoordinator
recycling_collections_previous: RecyclingCollectionsDataUpdateCoordinator
# TODO: Possibly at some point we can build dynamic sensors depending on user needs
garbage_collections: CollectionDataUpdateCoordinator
garbage_collections_previous: CollectionDataUpdateCoordinator
recycling_collections: CollectionDataUpdateCoordinator
recycling_collections_previous: CollectionDataUpdateCoordinator
waste_depot_visits: WasteDepotVisitsDataUpdateCoordinator
@@ -53,17 +56,21 @@ async def async_setup_entry(hass: HomeAssistant, entry: EcocitoConfigEntry) -> b
recycle_id = entry.data.get(ECOCITO_RECYCLE_TYPE, ECOCITO_RECYCLING_COLLECTION_TYPE)
refresh_time = entry.data.get(ECOCITO_REFRESH_MIN_KEY, ECOCITO_DEFAULT_REFRESH_MIN)
data = EcocitoData(
garbage_collections=GarbageCollectionsDataUpdateCoordinator(hass, client, 0, garbage_id, refresh_time),
garbage_collections_previous=GarbageCollectionsDataUpdateCoordinator(
garbage_collections=CollectionDataUpdateCoordinator(
hass, client, 0, garbage_id, refresh_time
),
garbage_collections_previous=CollectionDataUpdateCoordinator(
hass, client, -1, garbage_id, refresh_time
),
recycling_collections=RecyclingCollectionsDataUpdateCoordinator(
recycling_collections=CollectionDataUpdateCoordinator(
hass, client, 0, recycle_id, refresh_time
),
recycling_collections_previous=RecyclingCollectionsDataUpdateCoordinator(
recycling_collections_previous=CollectionDataUpdateCoordinator(
hass, client, -1, recycle_id, refresh_time
),
waste_depot_visits=WasteDepotVisitsDataUpdateCoordinator(hass, client, 0, refresh_time),
waste_depot_visits=WasteDepotVisitsDataUpdateCoordinator(
hass, client, 0, refresh_time
),
)
for field in fields(data):
coordinator = getattr(data, field.name)