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

View file

@ -42,6 +42,20 @@ async def test_browsing(hass):
hass, item.children[0].media_content_id hass, item.children[0].media_content_id
) )
assert item_child is not None 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.title == "Demo"
assert item_child.children is None assert item_child.children is None
assert item_child.can_play is False assert item_child.can_play is False