@@ -316,32 +316,40 @@ async def async_cmd_stop(self, player_id: str) -> None:
316316
317317 :param player_id: player_id of the player to handle the command.
318318 """
319- # TODO: redirect playback related commands to parent player?
320- return await self .get_player_provider (player_id ).async_cmd_stop (player_id )
319+ player = self .get_player (player_id )
320+ queue_player_id = player .active_queue
321+ return await self .get_player_provider (queue_player_id ).async_cmd_stop (
322+ queue_player_id
323+ )
321324
322325 async def async_cmd_play (self , player_id : str ) -> None :
323326 """
324327 Send PLAY command to given player.
325328
326329 :param player_id: player_id of the player to handle the command.
327330 """
328- # power on at play request
329- await self .async_cmd_power_on (player_id )
330331 player = self .get_player (player_id )
332+ queue_player_id = player .active_queue
331333 # unpause if paused else resume queue
332334 if player .state == PlayerState .Paused :
333- return await self .get_player_provider (player_id ).async_cmd_play (player_id )
334- return await self ._player_queues [player_id ].async_resume ()
335- # TODO: redirect playback related commands to parent player?
335+ return await self .get_player_provider (queue_player_id ).async_cmd_play (
336+ queue_player_id
337+ )
338+ # power on at play request
339+ await self .async_cmd_power_on (player_id )
340+ return await self ._player_queues [queue_player_id ].async_resume ()
336341
337342 async def async_cmd_pause (self , player_id : str ):
338343 """
339344 Send PAUSE command to given player.
340345
341346 :param player_id: player_id of the player to handle the command.
342347 """
343- return await self .get_player_provider (player_id ).async_cmd_pause (player_id )
344- # TODO: redirect playback related commands to parent player?
348+ player = self .get_player (player_id )
349+ queue_player_id = player .active_queue
350+ return await self .get_player_provider (queue_player_id ).async_cmd_pause (
351+ queue_player_id
352+ )
345353
346354 async def async_cmd_play_pause (self , player_id : str ):
347355 """
@@ -360,15 +368,19 @@ async def async_cmd_next(self, player_id: str):
360368
361369 :param player_id: player_id of the player to handle the command.
362370 """
363- return await self .get_player_queue (player_id ).async_next ()
371+ player = self .get_player (player_id )
372+ queue_player_id = player .active_queue
373+ return await self .get_player_queue (queue_player_id ).async_next ()
364374
365375 async def async_cmd_previous (self , player_id : str ):
366376 """
367377 Send PREVIOUS TRACK command to given player.
368378
369379 :param player_id: player_id of the player to handle the command.
370380 """
371- return await self .get_player_queue (player_id ).async_previous ()
381+ player = self .get_player (player_id )
382+ queue_player_id = player .active_queue
383+ return await self .get_player_queue (queue_player_id ).async_previous ()
372384
373385 async def async_cmd_power_on (self , player_id : str ) -> None :
374386 """
@@ -405,19 +417,20 @@ async def async_cmd_power_off(self, player_id: str) -> None:
405417 if player .is_group_player :
406418 # player is group, turn off all childs
407419 for child_player_id in player .group_childs :
408- if self ._players .get (child_player_id ):
420+ child_player = self .get_player (child_player_id )
421+ if child_player and child_player .powered :
409422 await self .async_cmd_power_off (child_player_id )
410423 else :
411424 # if this was the last powered player in the group, turn off group
412425 for parent_player_id in player .group_parents :
413- parent_player = self ._players . get (parent_player_id )
414- if not parent_player :
426+ parent_player = self .get_player (parent_player_id )
427+ if not parent_player or not parent_player . powered :
415428 continue
416429 has_powered_players = False
417430 for child_player_id in parent_player .group_childs :
418431 if child_player_id == player_id :
419432 continue
420- child_player = self ._players . get (child_player_id )
433+ child_player = self .get_player (child_player_id )
421434 if child_player and child_player .powered :
422435 has_powered_players = True
423436 break
0 commit comments