music-assistant-server

1.2 KBPY
setup_flow.py
1.2 KB36 lines • python
1"""Setup flow for the KION Music provider."""
2
3from __future__ import annotations
4
5from dataclasses import replace
6from typing import TYPE_CHECKING
7
8from music_assistant_models.config_entries import ConfigEntry
9from music_assistant_models.enums import ConfigEntryType
10
11from music_assistant.models.setup_flow import SetupFlowError
12
13from .constants import CONF_TOKEN
14
15if TYPE_CHECKING:
16    from music_assistant.models.setup_flow import SetupSession
17
18_ENTRIES = (ConfigEntry(key=CONF_TOKEN, type=ConfigEntryType.SECURE_STRING, required=True),)
19
20
21async def run_setup(session: SetupSession) -> None:
22    """Run the setup flow: collect the KION Music token and create the provider."""
23    errors: dict[str, str] | None = None
24    setup_data = dict(session.context.setup_data)
25    while True:
26        entries = [
27            replace(entry, value=setup_data.get(entry.key, entry.value)) for entry in _ENTRIES
28        ]
29        submitted = await session.form(entries, step_id="user", errors=errors, last_step=True)
30        setup_data.update(submitted)
31        try:
32            await session.finish(setup_data)
33            return
34        except SetupFlowError as err:
35            errors = {"base": err.translation_key or str(err)}
36