# Copyright 2022 Brendan McCluskey # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """The Eufy Robovac integration.""" from __future__ import annotations from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant from .const import DOMAIN PLATFORMS = [Platform.VACUUM] async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Eufy Robovac from a config entry.""" hass.data.setdefault(DOMAIN, {}) # hass_data = dict(entry.data) # Registers update listener to update config entry when options are updated. # unsub_options_update_listener = entry.add_update_listener(options_update_listener) # Store a reference to the unsubscribe function to cleanup if an entry is unloaded. # hass_data["unsub_options_update_listener"] = unsub_options_update_listener # hass.data[DOMAIN][entry.entry_id] = hass_data entry.async_on_unload(entry.add_update_listener(update_listener)) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Unload a config entry.""" if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): """Nothing""" return unload_ok async def update_listener(hass, entry): """Handle options update.""" await async_unload_entry(hass, entry) await async_setup_entry(hass, entry)