1 """Config flow for Monzo."""
3 from __future__
import annotations
5 from collections.abc
import Mapping
9 import voluptuous
as vol
15 from .const
import DOMAIN
19 config_entry_oauth2_flow.AbstractOAuth2FlowHandler, domain=DOMAIN
21 """Handle a config flow."""
25 oauth_data: dict[str, Any]
30 return logging.getLogger(__name__)
33 self, user_input: dict[str, Any] |
None =
None
34 ) -> ConfigFlowResult:
35 """Wait for the user to confirm in-app approval."""
36 if user_input
is not None:
37 if self.source != SOURCE_REAUTH:
38 return self.async_create_entry(title=DOMAIN, data=self.
oauth_dataoauth_data)
39 return self.async_update_reload_and_abort(
40 self._get_reauth_entry(),
44 data_schema = vol.Schema({vol.Required(
"confirm"): bool})
46 return self.async_show_form(
47 step_id=
"await_approval_confirmation", data_schema=data_schema
51 """Create an entry for the flow."""
53 user_id = data[CONF_TOKEN][
"user_id"]
54 await self.async_set_unique_id(user_id)
55 if self.source != SOURCE_REAUTH:
56 self._abort_if_unique_id_configured()
58 self._abort_if_unique_id_mismatch(reason=
"wrong_account")
63 self, entry_data: Mapping[str, Any]
64 ) -> ConfigFlowResult:
65 """Perform reauth upon an API authentication error."""
69 self, user_input: dict[str, Any] |
None =
None
70 ) -> ConfigFlowResult:
71 """Confirm reauth dialog."""
72 if user_input
is None:
73 return self.async_show_form(step_id=
"reauth_confirm")
74 return await self.async_step_user()
ConfigFlowResult async_oauth_create_entry(self, dict[str, Any] data)
logging.Logger logger(self)
ConfigFlowResult async_step_reauth_confirm(self, dict[str, Any]|None user_input=None)
ConfigFlowResult async_step_await_approval_confirmation(self, dict[str, Any]|None user_input=None)
ConfigFlowResult async_step_reauth(self, Mapping[str, Any] entry_data)