diff --git a/homeassistant/components/heos/__init__.py b/homeassistant/components/heos/__init__.py index 862fc9092c2..0cae943397d 100644 --- a/homeassistant/components/heos/__init__.py +++ b/homeassistant/components/heos/__init__.py @@ -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() diff --git a/homeassistant/components/heos/media_player.py b/homeassistant/components/heos/media_player.py index be816849e32..adbeadbc24f 100644 --- a/homeassistant/components/heos/media_player.py +++ b/homeassistant/components/heos/media_player.py @@ -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.""" diff --git a/homeassistant/components/heos/quality_scale.yaml b/homeassistant/components/heos/quality_scale.yaml index 1fdc2444907..85d6ef69d09 100644 --- a/homeassistant/components/heos/quality_scale.yaml +++ b/homeassistant/components/heos/quality_scale.yaml @@ -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