1
mirror of https://github.com/home-assistant/core synced 2024-10-07 10:13:38 +02:00

Keep TTS media browser params in identifier (#66663)

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
Bram Kragten 2022-02-16 17:54:57 +01:00 committed by GitHub
parent 39cf250a8e
commit a9390908ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 4 deletions

View File

@ -70,8 +70,8 @@ class TTSMediaSource(MediaSource):
) -> BrowseMediaSource:
"""Return media."""
if item.identifier:
provider, _, _ = item.identifier.partition("?")
return self._provider_item(provider)
provider, _, params = item.identifier.partition("?")
return self._provider_item(provider, params)
# Root. List providers.
manager: SpeechManager = self.hass.data[DOMAIN]
@ -89,7 +89,9 @@ class TTSMediaSource(MediaSource):
)
@callback
def _provider_item(self, provider_domain: str) -> BrowseMediaSource:
def _provider_item(
self, provider_domain: str, params: str | None = None
) -> BrowseMediaSource:
"""Return provider item."""
manager: SpeechManager = self.hass.data[DOMAIN]
provider = manager.providers.get(provider_domain)
@ -97,9 +99,14 @@ class TTSMediaSource(MediaSource):
if provider is None:
raise BrowseError("Unknown provider")
if params:
params = f"?{params}"
else:
params = ""
return BrowseMediaSource(
domain=DOMAIN,
identifier=provider_domain,
identifier=f"{provider_domain}{params}",
media_class=MEDIA_CLASS_APP,
media_content_type="provider",
title=provider.name,

View File

@ -42,6 +42,20 @@ async def test_browsing(hass):
hass, item.children[0].media_content_id
)
assert item_child is not None
assert item_child.media_content_id == item.children[0].media_content_id
assert item_child.title == "Demo"
assert item_child.children is None
assert item_child.can_play is False
assert item_child.can_expand is True
item_child = await media_source.async_browse_media(
hass, item.children[0].media_content_id + "?message=bla"
)
assert item_child is not None
assert (
item_child.media_content_id
== item.children[0].media_content_id + "?message=bla"
)
assert item_child.title == "Demo"
assert item_child.children is None
assert item_child.can_play is False