Skip to content

Commit

Permalink
some cleanup of delayed callbacks
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelveldt committed Oct 23, 2024
1 parent cc6d02d commit ebfeae1
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 8 deletions.
2 changes: 1 addition & 1 deletion music_assistant/server/controllers/player_queues.py
Original file line number Diff line number Diff line change
Expand Up @@ -1041,7 +1041,7 @@ def on_player_update(
and (queue.items - queue.current_index) < 5
):
task_id = f"fill_radio_tracks_{queue_id}"
self.mass.call_later(5, self._fill_radio_tracks(queue_id), task_id=task_id)
self.mass.call_later(5, self._fill_radio_tracks, queue_id, task_id=task_id)

def on_player_remove(self, player_id: str) -> None:
"""Call when a player is removed from the registry."""
Expand Down
12 changes: 11 additions & 1 deletion music_assistant/server/controllers/players.py
Original file line number Diff line number Diff line change
Expand Up @@ -838,6 +838,16 @@ def update(
)
self._prev_states[player_id] = new_state

if "available" in changed_values and not player.available:
# ensure a player that became available is no longer synced
if player.synced_to:
self.mass.create_task(self.cmd_unsync(player_id))
if player.group_childs:
for group_child_id in player.group_childs:
self.mass.create_task(self.cmd_power(group_child_id))
if player.active_group:
self.mass.create_task(self.cmd_power(player.active_group, False))

if not player.enabled and not force_update:
# ignore updates for disabled players
return
Expand Down Expand Up @@ -1049,7 +1059,7 @@ async def on_player_config_change(self, config: PlayerConfig, changed_keys: set[
player.available = False
# if the player was playing, restart playback
elif not player_disabled and player.state == PlayerState.PLAYING:
self.mass.call_later(1, self.mass.player_queues.resume(player.active_source))
self.mass.call_later(1, self.mass.player_queues.resume, player.active_source)
# check for group memberships that need to be updated
if player_disabled and player.active_group and player_provider:
# try to remove from the group
Expand Down
2 changes: 1 addition & 1 deletion music_assistant/server/providers/hass/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,4 +203,4 @@ async def _hass_listener(self) -> None:
self.logger.warning("Connection to HA lost due to error: %s", err)
self.logger.info("Connection to HA lost. Connection will be automatically retried later.")
# schedule a reload of the provider
self.mass.call_later(5, self.mass.load_provider(self.instance_id, allow_retry=True))
self.mass.call_later(5, self.mass.load_provider, self.instance_id, allow_retry=True)
3 changes: 1 addition & 2 deletions music_assistant/server/providers/plex/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,8 +358,7 @@ def connect() -> PlexServer:
except plexapi.exceptions.BadRequest as err:
if "Invalid token" in str(err):
# token invalid, invalidate the config
self.mass.call_later(
0,
self.mass.create_task(
self.mass.config.remove_provider_config_value(
self.instance_id, CONF_AUTH_TOKEN
),
Expand Down
2 changes: 1 addition & 1 deletion music_assistant/server/providers/snapcast/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -727,4 +727,4 @@ def _handle_disconnect(self, exc: Exception) -> None:
str(exc),
)
# schedule a reload of the provider
self.mass.call_later(5, self.mass.load_provider(self.instance_id, allow_retry=True))
self.mass.call_later(5, self.mass.load_provider, self.instance_id, allow_retry=True)
4 changes: 2 additions & 2 deletions music_assistant/server/providers/sonos/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ async def on_mdns_service_state_change(
# handle new player setup in a delayed task because mdns announcements
# can arrive in (duplicated) bursts
task_id = f"setup_sonos_{player_id}"
self.mass.call_later(5, self._setup_player(player_id, name, info), task_id=task_id)
self.mass.call_later(5, self._setup_player, player_id, name, info, task_id=task_id)

async def get_player_config_entries(
self,
Expand Down Expand Up @@ -237,7 +237,7 @@ async def play_media(
await self.mass.players.cmd_unsync_many(group_childs)
await self.mass.players.play_media(airplay.player_id, media)
if group_childs:
self.mass.call_later(5, self.cmd_sync_many(player_id, group_childs))
self.mass.call_later(5, self.cmd_sync_many, player_id, group_childs)
return

if media.queue_id and media.queue_id.startswith("ugp_"):
Expand Down

0 comments on commit ebfeae1

Please sign in to comment.