/
/
/
1"""Setup flow for the Bose SoundTouch provider."""
2
3from __future__ import annotations
4
5from typing import TYPE_CHECKING
6
7from music_assistant_models.config_entries import ConfigEntry
8from music_assistant_models.enums import ConfigEntryType
9
10from music_assistant.models.setup_flow import SetupFlowError
11from music_assistant.providers.bose_soundtouch.const import CONF_APP_KEY
12
13if TYPE_CHECKING:
14 from music_assistant.models.setup_flow import SetupSession
15
16_ENTRIES = (
17 ConfigEntry(
18 key=CONF_APP_KEY,
19 type=ConfigEntryType.SECURE_STRING,
20 translation_key="app_key",
21 required=False,
22 ),
23)
24
25
26async def run_setup(session: SetupSession) -> None:
27 """Run the setup flow: collect the (optional) developer app key and create the provider."""
28 errors: dict[str, str] | None = None
29 setup_data = dict(session.context.setup_data)
30 while True:
31 submitted = await session.form(
32 list(_ENTRIES), step_id="user", errors=errors, last_step=True
33 )
34 setup_data.update(submitted)
35 try:
36 await session.finish(setup_data)
37 return
38 except SetupFlowError as err:
39 errors = {"base": err.translation_key or str(err)}
40