Fix snapcast group child (#1360)
authorSantiago Soto <santiago@soto.uy>
Fri, 14 Jun 2024 09:48:55 +0000 (06:48 -0300)
committerGitHub <noreply@github.com>
Fri, 14 Jun 2024 09:48:55 +0000 (11:48 +0200)
fix group childs

music_assistant/server/providers/snapcast/__init__.py

index 01bfee0a2302e34c1a962f83c0383416acdbaa52..ae45bf5e248166ca78a1baf5bef6a9a3f9c09a7f 100644 (file)
@@ -342,6 +342,7 @@ class SnapCastProvider(PlayerProvider):
         """Sync Snapcast player."""
         group = self._get_snapgroup(target_player)
         await group.add_client(self._get_snapclient_id(player_id))
+        self._handle_update()
 
     async def cmd_unsync(self, player_id: str) -> None:
         """Unsync Snapcast player."""
@@ -350,7 +351,7 @@ class SnapCastProvider(PlayerProvider):
         await group.remove_client(snap_client_id)
         # assign default/empty stream to the player
         await self._get_snapgroup(player_id).set_stream("default")
-        self._handle_update()
+        await self.cmd_stop(player_id=player_id)
 
     async def play_media(self, player_id: str, media: PlayerMedia) -> None:  # noqa: PLR0915
         """Handle PLAY MEDIA on given player."""
@@ -471,9 +472,9 @@ class SnapCastProvider(PlayerProvider):
         """Return player_ids of the players synced to this player."""
         snap_group = self._get_snapgroup(player_id)
         return {
-            self._get_ma_id(snap_client)
-            for snap_client in snap_group.clients
-            if snap_client != player_id
+            self._get_ma_id(snap_client_id)
+            for snap_client_id in snap_group.clients
+            if len(snap_group.clients) > 1
         }
 
     async def _create_stream(self) -> tuple[Snapstream, int]: