/
/
/
1"""Setup flow for the nicovideo provider."""
2
3from __future__ import annotations
4
5from dataclasses import replace
6from typing import TYPE_CHECKING
7
8from music_assistant.models.setup_flow import SetupFlowError
9from music_assistant.providers.nicovideo.config.factory import get_setup_config_entries
10
11if TYPE_CHECKING:
12 from music_assistant.models.setup_flow import SetupSession
13
14
15async def run_setup(session: SetupSession) -> None:
16 """Run the setup flow: collect the account credentials and create the provider."""
17 errors: dict[str, str] | None = None
18 setup_data = dict(session.context.setup_data)
19 base_entries = get_setup_config_entries()
20 while True:
21 entries = [
22 replace(entry, value=setup_data.get(entry.key, entry.value)) for entry in base_entries
23 ]
24 submitted = await session.form(entries, step_id="user", errors=errors, last_step=True)
25 setup_data.update(submitted)
26 try:
27 await session.finish(setup_data)
28 return
29 except SetupFlowError as err:
30 errors = {"base": err.translation_key or str(err)}
31