"""Home Assistant PlayerProvider for Music Assistant."""
hass_prov: HomeAssistantProvider
+ on_unload_callbacks: list[callable] | None = None
async def loaded_in_mass(self) -> None:
"""Call after the provider has been loaded."""
continue
await self._setup_player(state, entity_registry, device_registry)
# register for entity state updates
- await self.hass_prov.hass.subscribe_entities(self._on_entity_state_update, player_ids)
+ self.on_unload_callbacks = [
+ await self.hass_prov.hass.subscribe_entities(self._on_entity_state_update, player_ids)
+ ]
# remove any leftover players (after reconfigure of players)
for player in self.players:
if player.player_id not in player_ids:
self.mass.players.remove(player.player_id)
+ async def unload(self, is_removed: bool = False) -> None:
+ """
+ Handle unload/close of the provider.
+
+ Called when provider is deregistered (e.g. MA exiting or config reloading).
+ is_removed will be set to True when the provider is removed from the configuration.
+ """
+ if self.on_unload_callbacks:
+ for callback in self.on_unload_callbacks:
+ callback()
+
async def get_player_config_entries(
self,
player_id: str,