async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Rituals Perfume Genie from a config entry.""" session = async_get_clientsession(hass) account = Account(EMPTY_CREDENTIALS, EMPTY_CREDENTIALS, session) account.data = {ACCOUNT_HASH: entry.data.get(ACCOUNT_HASH)} try: account_devices = await account.get_devices() except aiohttp.ClientError as err: raise ConfigEntryNotReady from err hass.data.setdefault(DOMAIN, {})[entry.entry_id] = { COORDINATORS: {}, DEVICES: {}, } for device in account_devices: hublot = device.hub_data[HUBLOT] coordinator = RitualsDataUpdateCoordinator(hass, device) await coordinator.async_refresh() hass.data[DOMAIN][entry.entry_id][DEVICES][hublot] = device hass.data[DOMAIN][entry.entry_id][COORDINATORS][hublot] = coordinator hass.config_entries.async_setup_platforms(entry, PLATFORMS) return True
async def async_step_user(self, user_input=None) -> FlowResult: """Handle the initial step.""" if user_input is None: return self.async_show_form(step_id="user", data_schema=DATA_SCHEMA) errors = {} session = async_get_clientsession(self.hass) account = Account(user_input[CONF_EMAIL], user_input[CONF_PASSWORD], session) try: await account.authenticate() except ClientResponseError: errors["base"] = "cannot_connect" except AuthenticationException: errors["base"] = "invalid_auth" except Exception: # pylint: disable=broad-except _LOGGER.exception("Unexpected exception") errors["base"] = "unknown" else: await self.async_set_unique_id(account.data[CONF_EMAIL]) self._abort_if_unique_id_configured() return self.async_create_entry( title=account.data[CONF_EMAIL], data={ACCOUNT_HASH: account.data[ACCOUNT_HASH]}, ) return self.async_show_form(step_id="user", data_schema=DATA_SCHEMA, errors=errors)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Rituals Perfume Genie from a config entry.""" session = async_get_clientsession(hass) account = Account(session=session, account_hash=entry.data[ACCOUNT_HASH]) try: account_devices = await account.get_devices() except aiohttp.ClientError as err: raise ConfigEntryNotReady from err hass.data.setdefault(DOMAIN, {})[entry.entry_id] = { COORDINATORS: {}, DEVICES: {}, } for device in account_devices: hublot = device.hublot coordinator = RitualsDataUpdateCoordinator(hass, device) await coordinator.async_config_entry_first_refresh() hass.data[DOMAIN][entry.entry_id][DEVICES][hublot] = device hass.data[DOMAIN][entry.entry_id][COORDINATORS][hublot] = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): """Set up Rituals Perfume Genie from a config entry.""" session = async_get_clientsession(hass) account = Account(EMPTY_CREDENTIALS, EMPTY_CREDENTIALS, session) account.data = {ACCOUNT_HASH: entry.data.get(ACCOUNT_HASH)} try: await account.get_devices() except ClientConnectorError as ex: raise ConfigEntryNotReady from ex hass.data.setdefault(DOMAIN, {})[entry.entry_id] = account for component in PLATFORMS: hass.async_create_task( hass.config_entries.async_forward_entry_setup(entry, component)) return True