mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +00:00
Clean-up HEOS entity event setup (#134683)
* Use async_on_remove * Remove redundant signal clearing
This commit is contained in:
parent
c7993eff99
commit
c9a607aa45
@ -168,7 +168,6 @@ class ControllerManager:
|
||||
self._device_registry = None
|
||||
self._entity_registry = None
|
||||
self.controller = controller
|
||||
self._signals = []
|
||||
|
||||
async def connect_listeners(self):
|
||||
"""Subscribe to events of interest."""
|
||||
@ -176,23 +175,17 @@ class ControllerManager:
|
||||
self._entity_registry = er.async_get(self._hass)
|
||||
|
||||
# Handle controller events
|
||||
self._signals.append(
|
||||
self.controller.dispatcher.connect(
|
||||
heos_const.SIGNAL_CONTROLLER_EVENT, self._controller_event
|
||||
)
|
||||
self.controller.dispatcher.connect(
|
||||
heos_const.SIGNAL_CONTROLLER_EVENT, self._controller_event
|
||||
)
|
||||
|
||||
# Handle connection-related events
|
||||
self._signals.append(
|
||||
self.controller.dispatcher.connect(
|
||||
heos_const.SIGNAL_HEOS_EVENT, self._heos_event
|
||||
)
|
||||
self.controller.dispatcher.connect(
|
||||
heos_const.SIGNAL_HEOS_EVENT, self._heos_event
|
||||
)
|
||||
|
||||
async def disconnect(self):
|
||||
"""Disconnect subscriptions."""
|
||||
for signal_remove in self._signals:
|
||||
signal_remove()
|
||||
self._signals.clear()
|
||||
self.controller.dispatcher.disconnect_all()
|
||||
await self.controller.disconnect()
|
||||
|
||||
|
@ -123,7 +123,6 @@ class HeosMediaPlayer(MediaPlayerEntity):
|
||||
"""Initialize."""
|
||||
self._media_position_updated_at = None
|
||||
self._player = player
|
||||
self._signals: list = []
|
||||
self._source_manager = source_manager
|
||||
self._group_manager = group_manager
|
||||
self._attr_unique_id = str(player.player_id)
|
||||
@ -150,13 +149,13 @@ class HeosMediaPlayer(MediaPlayerEntity):
|
||||
async def async_added_to_hass(self) -> None:
|
||||
"""Device added to hass."""
|
||||
# Update state when attributes of the player change
|
||||
self._signals.append(
|
||||
self.async_on_remove(
|
||||
self._player.heos.dispatcher.connect(
|
||||
heos_const.SIGNAL_PLAYER_EVENT, self._player_update
|
||||
)
|
||||
)
|
||||
# Update state when heos changes
|
||||
self._signals.append(
|
||||
self.async_on_remove(
|
||||
async_dispatcher_connect(self.hass, SIGNAL_HEOS_UPDATED, self._heos_updated)
|
||||
)
|
||||
# Register this player's entity_id so it can be resolved by the group manager
|
||||
@ -304,12 +303,6 @@ class HeosMediaPlayer(MediaPlayerEntity):
|
||||
self._player.player_id, self.entity_id
|
||||
)
|
||||
|
||||
async def async_will_remove_from_hass(self) -> None:
|
||||
"""Disconnect the device when removed."""
|
||||
for signal_remove in self._signals:
|
||||
signal_remove()
|
||||
self._signals.clear()
|
||||
|
||||
@property
|
||||
def available(self) -> bool:
|
||||
"""Return True if the device is available."""
|
||||
|
@ -17,11 +17,7 @@ rules:
|
||||
docs-high-level-description: done
|
||||
docs-installation-instructions: done
|
||||
docs-removal-instructions: todo
|
||||
entity-event-setup:
|
||||
status: todo
|
||||
comment: |
|
||||
Simplify by using async_on_remove instead of keeping track of listeners to remove
|
||||
later in async_will_remove_from_hass.
|
||||
entity-event-setup: done
|
||||
entity-unique-id: done
|
||||
has-entity-name: done
|
||||
runtime-data: done
|
||||
|
Loading…
x
Reference in New Issue
Block a user