diff --git a/homeassistant/components/unifi/controller.py b/homeassistant/components/unifi/controller.py index e2ad9636d7a..0d8848e2920 100644 --- a/homeassistant/components/unifi/controller.py +++ b/homeassistant/components/unifi/controller.py @@ -101,7 +101,6 @@ class UniFiController: self.progress = None self.wireless_clients = None - self.listeners = [] self.site_id: str = "" self._site_name = None self._site_role = None @@ -466,10 +465,6 @@ class UniFiController: if not unload_ok: return False - for unsub_dispatcher in self.listeners: - unsub_dispatcher() - self.listeners = [] - if self._cancel_heartbeat_check: self._cancel_heartbeat_check() self._cancel_heartbeat_check = None diff --git a/homeassistant/components/unifi/device_tracker.py b/homeassistant/components/unifi/device_tracker.py index 9842184e2ee..64963643447 100644 --- a/homeassistant/components/unifi/device_tracker.py +++ b/homeassistant/components/unifi/device_tracker.py @@ -85,7 +85,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities): add_device_entities(controller, async_add_entities, devices) for signal in (controller.signal_update, controller.signal_options_update): - controller.listeners.append(async_dispatcher_connect(hass, signal, items_added)) + config_entry.async_on_unload( + async_dispatcher_connect(hass, signal, items_added) + ) items_added() diff --git a/homeassistant/components/unifi/sensor.py b/homeassistant/components/unifi/sensor.py index 755d95a061b..c8238602856 100644 --- a/homeassistant/components/unifi/sensor.py +++ b/homeassistant/components/unifi/sensor.py @@ -41,7 +41,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities): add_uptime_entities(controller, async_add_entities, clients) for signal in (controller.signal_update, controller.signal_options_update): - controller.listeners.append(async_dispatcher_connect(hass, signal, items_added)) + config_entry.async_on_unload( + async_dispatcher_connect(hass, signal, items_added) + ) items_added() diff --git a/homeassistant/components/unifi/switch.py b/homeassistant/components/unifi/switch.py index f04acaaec87..59e8c9fa149 100644 --- a/homeassistant/components/unifi/switch.py +++ b/homeassistant/components/unifi/switch.py @@ -86,7 +86,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities): add_dpi_entities(controller, async_add_entities, dpi_groups) for signal in (controller.signal_update, controller.signal_options_update): - controller.listeners.append(async_dispatcher_connect(hass, signal, items_added)) + config_entry.async_on_unload( + async_dispatcher_connect(hass, signal, items_added) + ) items_added() known_poe_clients.clear() diff --git a/tests/components/unifi/test_controller.py b/tests/components/unifi/test_controller.py index 50d464d23c0..ec666ff27b9 100644 --- a/tests/components/unifi/test_controller.py +++ b/tests/components/unifi/test_controller.py @@ -313,13 +313,10 @@ async def test_reset_after_successful_setup(hass, aioclient_mock): config_entry = await setup_unifi_integration(hass, aioclient_mock) controller = hass.data[UNIFI_DOMAIN][config_entry.entry_id] - assert len(controller.listeners) == 6 - result = await controller.async_reset() await hass.async_block_till_done() assert result is True - assert len(controller.listeners) == 0 async def test_reset_fails(hass, aioclient_mock):