mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 15:47:12 +00:00
Change hass.data storage to runtime.data for Squeezebox (#146482)
This commit is contained in:
parent
c9356868f7
commit
0729b3a2f1
@ -1,7 +1,7 @@
|
||||
"""The Squeezebox integration."""
|
||||
|
||||
from asyncio import timeout
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
from http import HTTPStatus
|
||||
import logging
|
||||
@ -37,8 +37,6 @@ from .const import (
|
||||
DISCOVERY_INTERVAL,
|
||||
DISCOVERY_TASK,
|
||||
DOMAIN,
|
||||
KNOWN_PLAYERS,
|
||||
KNOWN_SERVERS,
|
||||
SERVER_MANUFACTURER,
|
||||
SERVER_MODEL,
|
||||
SERVER_MODEL_ID,
|
||||
@ -73,6 +71,7 @@ class SqueezeboxData:
|
||||
|
||||
coordinator: LMSStatusDataUpdateCoordinator
|
||||
server: Server
|
||||
known_player_ids: set[str] = field(default_factory=set)
|
||||
|
||||
|
||||
type SqueezeboxConfigEntry = ConfigEntry[SqueezeboxData]
|
||||
@ -187,16 +186,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry) -
|
||||
|
||||
entry.runtime_data = SqueezeboxData(coordinator=server_coordinator, server=lms)
|
||||
|
||||
# set up player discovery
|
||||
known_servers = hass.data.setdefault(DOMAIN, {}).setdefault(KNOWN_SERVERS, {})
|
||||
known_players = known_servers.setdefault(lms.uuid, {}).setdefault(KNOWN_PLAYERS, [])
|
||||
|
||||
async def _player_discovery(now: datetime | None = None) -> None:
|
||||
"""Discover squeezebox players by polling server."""
|
||||
|
||||
async def _discovered_player(player: Player) -> None:
|
||||
"""Handle a (re)discovered player."""
|
||||
if player.player_id in known_players:
|
||||
if player.player_id in entry.runtime_data.known_player_ids:
|
||||
await player.async_update()
|
||||
async_dispatcher_send(
|
||||
hass, SIGNAL_PLAYER_REDISCOVERED, player.player_id, player.connected
|
||||
@ -207,7 +202,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry) -
|
||||
hass, entry, player, lms.uuid
|
||||
)
|
||||
await player_coordinator.async_refresh()
|
||||
known_players.append(player.player_id)
|
||||
entry.runtime_data.known_player_ids.add(player.player_id)
|
||||
async_dispatcher_send(
|
||||
hass, SIGNAL_PLAYER_DISCOVERED, player_coordinator
|
||||
)
|
||||
|
@ -4,8 +4,6 @@ CONF_HTTPS = "https"
|
||||
DISCOVERY_TASK = "discovery_task"
|
||||
DOMAIN = "squeezebox"
|
||||
DEFAULT_PORT = 9000
|
||||
KNOWN_PLAYERS = "known_players"
|
||||
KNOWN_SERVERS = "known_servers"
|
||||
PLAYER_DISCOVERY_UNSUB = "player_discovery_unsub"
|
||||
SENSOR_UPDATE_INTERVAL = 60
|
||||
SERVER_MANUFACTURER = "https://lyrion.org/"
|
||||
|
@ -60,8 +60,6 @@ from .const import (
|
||||
DEFAULT_VOLUME_STEP,
|
||||
DISCOVERY_TASK,
|
||||
DOMAIN,
|
||||
KNOWN_PLAYERS,
|
||||
KNOWN_SERVERS,
|
||||
SERVER_MANUFACTURER,
|
||||
SERVER_MODEL,
|
||||
SERVER_MODEL_ID,
|
||||
@ -316,9 +314,9 @@ class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
|
||||
|
||||
async def async_will_remove_from_hass(self) -> None:
|
||||
"""Remove from list of known players when removed from hass."""
|
||||
known_servers = self.hass.data[DOMAIN][KNOWN_SERVERS]
|
||||
known_players = known_servers[self.coordinator.server_uuid][KNOWN_PLAYERS]
|
||||
known_players.remove(self.coordinator.player.player_id)
|
||||
self.coordinator.config_entry.runtime_data.known_player_ids.remove(
|
||||
self.coordinator.player.player_id
|
||||
)
|
||||
|
||||
@property
|
||||
def volume_level(self) -> float | None:
|
||||
|
Loading…
x
Reference in New Issue
Block a user