Fix the order of the group members attribute of the Music Assistant integration (#140204)

This commit is contained in:
msm595 2025-03-09 11:07:35 -04:00 committed by GitHub
parent 264d4a53a2
commit befcd63221
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 15 deletions

View File

@ -276,22 +276,26 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
self._attr_state = MediaPlayerState(player.state.value) self._attr_state = MediaPlayerState(player.state.value)
else: else:
self._attr_state = MediaPlayerState(STATE_OFF) self._attr_state = MediaPlayerState(STATE_OFF)
group_members_entity_ids: list[str] = []
group_members: list[str] = []
if player.group_childs: if player.group_childs:
group_members = player.group_childs
elif player.synced_to and (parent := self.mass.players.get(player.synced_to)):
group_members = parent.group_childs
# translate MA group_childs to HA group_members as entity id's # translate MA group_childs to HA group_members as entity id's
entity_registry = er.async_get(self.hass) entity_registry = er.async_get(self.hass)
group_members_entity_ids = [ group_members_entity_ids: list[str] = [
entity_id entity_id
for child_id in player.group_childs for child_id in group_members
if ( if (
entity_id := entity_registry.async_get_entity_id( entity_id := entity_registry.async_get_entity_id(
self.platform.domain, DOMAIN, child_id self.platform.domain, DOMAIN, child_id
) )
) )
] ]
# NOTE: we sort the group_members for now,
# until the MA API returns them sorted (group_childs is now a set) self._attr_group_members = group_members_entity_ids
self._attr_group_members = sorted(group_members_entity_ids)
self._attr_volume_level = ( self._attr_volume_level = (
player.volume_level / 100 if player.volume_level is not None else None player.volume_level / 100 if player.volume_level is not None else None
) )

View File

@ -109,8 +109,8 @@
'entity_picture_local': None, 'entity_picture_local': None,
'friendly_name': 'Test Group Player 1', 'friendly_name': 'Test Group Player 1',
'group_members': list([ 'group_members': list([
'media_player.my_super_test_player_2',
'media_player.test_player_1', 'media_player.test_player_1',
'media_player.my_super_test_player_2',
]), ]),
'icon': 'mdi:speaker-multiple', 'icon': 'mdi:speaker-multiple',
'is_volume_muted': False, 'is_volume_muted': False,