1
mirror of https://github.com/home-assistant/core synced 2024-08-02 23:40:32 +02:00

Optimize Sonos join behavior when using media_player.join (#74174)

Optimize Sonos media_player.join service
This commit is contained in:
jjlawren 2022-06-29 08:23:22 -05:00 committed by GitHub
parent 46b4be5b41
commit 329ecc74c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 14 deletions

View File

@ -763,19 +763,14 @@ class SonosMediaPlayerEntity(SonosEntity, MediaPlayerEntity):
async def async_join_players(self, group_members):
"""Join `group_members` as a player group with the current player."""
async with self.hass.data[DATA_SONOS].topology_condition:
speakers = []
for entity_id in group_members:
if speaker := self.hass.data[DATA_SONOS].entity_id_mappings.get(
entity_id
):
speakers.append(speaker)
else:
raise HomeAssistantError(
f"Not a known Sonos entity_id: {entity_id}"
)
speakers = []
for entity_id in group_members:
if speaker := self.hass.data[DATA_SONOS].entity_id_mappings.get(entity_id):
speakers.append(speaker)
else:
raise HomeAssistantError(f"Not a known Sonos entity_id: {entity_id}")
await self.hass.async_add_executor_job(self.speaker.join, speakers)
await SonosSpeaker.join_multi(self.hass, self.speaker, speakers)
async def async_unjoin_player(self):
"""Remove this player from any group.

View File

@ -883,9 +883,9 @@ class SonosSpeaker:
for speaker in speakers:
if speaker.soco.uid != self.soco.uid:
speaker.soco.join(self.soco)
speaker.coordinator = self
if speaker not in group:
speaker.soco.join(self.soco)
speaker.coordinator = self
group.append(speaker)
return group