From a75bad3a8360b310919588ba4b7c61dfa0c19fe9 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Tue, 3 Jan 2023 20:59:28 +0100 Subject: [PATCH] Move add Device tracker entities to UniFi controller (#84883) --- homeassistant/components/unifi/controller.py | 2 +- .../components/unifi/device_tracker.py | 33 +++---------------- 2 files changed, 5 insertions(+), 30 deletions(-) diff --git a/homeassistant/components/unifi/controller.py b/homeassistant/components/unifi/controller.py index 7e46ff2d7e0..e0173844ec8 100644 --- a/homeassistant/components/unifi/controller.py +++ b/homeassistant/components/unifi/controller.py @@ -206,7 +206,7 @@ class UniFiController: """Create UniFi entity.""" if not description.allowed_fn( self, obj_id - ) or not description.supported_fn(self.api, obj_id): + ) or not description.supported_fn(self, obj_id): return entity = unifi_platform_entity(obj_id, self, description) diff --git a/homeassistant/components/unifi/device_tracker.py b/homeassistant/components/unifi/device_tracker.py index fe323518bc0..987d76dcf58 100644 --- a/homeassistant/components/unifi/device_tracker.py +++ b/homeassistant/components/unifi/device_tracker.py @@ -136,6 +136,10 @@ async def async_setup_entry( ) -> None: """Set up device tracker for UniFi Network integration.""" controller: UniFiController = hass.data[UNIFI_DOMAIN][config_entry.entry_id] + controller.register_platform_add_entities( + UnifiScannerEntity, ENTITY_DESCRIPTIONS, async_add_entities + ) + controller.entities[DOMAIN] = {CLIENT_TRACKER: set(), DEVICE_TRACKER: set()} @callback @@ -153,35 +157,6 @@ async def async_setup_entry( items_added() - @callback - def async_load_entities(description: UnifiEntityDescription) -> None: - """Load and subscribe to UniFi devices.""" - entities: list[ScannerEntity] = [] - api_handler = description.api_handler_fn(controller.api) - - @callback - def async_create_entity(event: ItemEvent, obj_id: str) -> None: - """Create UniFi entity.""" - if not description.allowed_fn( - controller, obj_id - ) or not description.supported_fn(controller.api, obj_id): - return - - entity = UnifiScannerEntity(obj_id, controller, description) - if event == ItemEvent.ADDED: - async_add_entities([entity]) - return - entities.append(entity) - - for obj_id in api_handler: - async_create_entity(ItemEvent.CHANGED, obj_id) - async_add_entities(entities) - - api_handler.subscribe(async_create_entity, ItemEvent.ADDED) - - for description in ENTITY_DESCRIPTIONS: - async_load_entities(description) - @callback def add_client_entities(controller, async_add_entities, clients):