Improve Universal media player toggle default behavior (#49395)

Before it could not be overridden and the default behavior meant nothing was called when all children were off, so it could not be used to turn on the media player. The new default behavior is to delegate to `turn_on` and `turn_off` instead, which is more likely to be the expected behavior.
pull/53865/head
Graham Rogers 2021-08-02 14:10:56 +01:00 committed by GitHub
parent 65c6943784
commit 4f96f05a75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -612,7 +612,11 @@ class UniversalMediaPlayer(MediaPlayerEntity):
async def async_toggle(self):
"""Toggle the power on the media player."""
if SERVICE_TOGGLE in self._cmds:
await self._async_call_service(SERVICE_TOGGLE, allow_override=True)
else:
# Delegate to turn_on or turn_off by default
await super().async_toggle()
async def async_update(self):
"""Update state in HA."""

View File

@ -998,7 +998,8 @@ class TestMediaPlayer(unittest.TestCase):
assert len(self.mock_mp_2.service_calls["shuffle_set"]) == 1
asyncio.run_coroutine_threadsafe(ump.async_toggle(), self.hass.loop).result()
assert len(self.mock_mp_2.service_calls["toggle"]) == 1
# Delegate to turn_off
assert len(self.mock_mp_2.service_calls["turn_off"]) == 2
def test_service_call_to_command(self):
"""Test service call to command."""