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:
parent
46b4be5b41
commit
329ecc74c4
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user