From 73d4650c70cfda9b230e1eef4348521c4ae93834 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Fri, 19 Dec 2025 17:29:00 +0100 Subject: [PATCH] Fix player removal event sent when player only temporary unavailable (#2856) --- .../controllers/players/player_controller.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/music_assistant/controllers/players/player_controller.py b/music_assistant/controllers/players/player_controller.py index 40a6da6a..263976a7 100644 --- a/music_assistant/controllers/players/player_controller.py +++ b/music_assistant/controllers/players/player_controller.py @@ -1412,12 +1412,22 @@ class PlayerController(CoreController): return await self._cleanup_player_memberships(player_id) del self._players[player_id] - self.logger.info("Player removed: %s", player.name) self.mass.player_queues.on_player_remove(player_id, permanent=permanent) await player.on_unload() if permanent: + # player permanent removal: delete its config + # and signal PLAYER_REMOVED event self.delete_player_config(player_id) - self.mass.signal_event(EventType.PLAYER_REMOVED, player_id) + self.logger.info("Player removed: %s", player.name) + self.mass.signal_event(EventType.PLAYER_REMOVED, player_id) + else: + # temporary unavailable: mark player as unavailable + # note: the player will be re-registered later if it comes back online + player.state.available = False + self.logger.info("Player unavailable: %s", player.name) + self.mass.signal_event( + EventType.PLAYER_UPDATED, object_id=player.player_id, data=player.state + ) @api_command("players/remove", required_role="admin") async def remove(self, player_id: str) -> None: -- 2.34.1