mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 22:57:17 +00:00
Ignore unknown states in universal media player (#77388)
Ignore unknown states
This commit is contained in:
parent
1bee9923dc
commit
083e902dc0
@ -109,6 +109,9 @@ STATES_ORDER = [
|
|||||||
STATE_BUFFERING,
|
STATE_BUFFERING,
|
||||||
STATE_PLAYING,
|
STATE_PLAYING,
|
||||||
]
|
]
|
||||||
|
STATES_ORDER_LOOKUP = {state: idx for idx, state in enumerate(STATES_ORDER)}
|
||||||
|
STATES_ORDER_IDLE = STATES_ORDER_LOOKUP[STATE_IDLE]
|
||||||
|
|
||||||
ATTRS_SCHEMA = cv.schema_with_slug_keys(cv.string)
|
ATTRS_SCHEMA = cv.schema_with_slug_keys(cv.string)
|
||||||
CMD_SCHEMA = cv.schema_with_slug_keys(cv.SERVICE_SCHEMA)
|
CMD_SCHEMA = cv.schema_with_slug_keys(cv.SERVICE_SCHEMA)
|
||||||
|
|
||||||
@ -626,12 +629,12 @@ class UniversalMediaPlayer(MediaPlayerEntity):
|
|||||||
"""Update state in HA."""
|
"""Update state in HA."""
|
||||||
self._child_state = None
|
self._child_state = None
|
||||||
for child_name in self._children:
|
for child_name in self._children:
|
||||||
if (child_state := self.hass.states.get(child_name)) and STATES_ORDER.index(
|
if (child_state := self.hass.states.get(child_name)) and (
|
||||||
child_state.state
|
child_state_order := STATES_ORDER_LOOKUP.get(child_state.state, 0)
|
||||||
) >= STATES_ORDER.index(STATE_IDLE):
|
) >= STATES_ORDER_IDLE:
|
||||||
if self._child_state:
|
if self._child_state:
|
||||||
if STATES_ORDER.index(child_state.state) > STATES_ORDER.index(
|
if child_state_order > STATES_ORDER_LOOKUP.get(
|
||||||
self._child_state.state
|
self._child_state.state, 0
|
||||||
):
|
):
|
||||||
self._child_state = child_state
|
self._child_state = child_state
|
||||||
else:
|
else:
|
||||||
|
@ -434,6 +434,12 @@ async def test_active_child_state(hass, mock_states):
|
|||||||
await ump.async_update()
|
await ump.async_update()
|
||||||
assert mock_states.mock_mp_2.entity_id == ump._child_state.entity_id
|
assert mock_states.mock_mp_2.entity_id == ump._child_state.entity_id
|
||||||
|
|
||||||
|
mock_states.mock_mp_1._state = "invalid_state"
|
||||||
|
mock_states.mock_mp_1.async_schedule_update_ha_state()
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
await ump.async_update()
|
||||||
|
assert mock_states.mock_mp_2.entity_id == ump._child_state.entity_id
|
||||||
|
|
||||||
|
|
||||||
async def test_name(hass):
|
async def test_name(hass):
|
||||||
"""Test name property."""
|
"""Test name property."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user