Make use of generic EntityComponent (#78492)

This commit is contained in:
epenet 2022-09-15 11:53:00 +02:00 committed by GitHub
parent 19ea95a6e4
commit b4afb1cb6b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 32 additions and 45 deletions

View file

@ -322,12 +322,9 @@ def async_register_rtsp_to_web_rtc_provider(
async def _async_refresh_providers(hass: HomeAssistant) -> None:
"""Check all cameras for any state changes for registered providers."""
component: EntityComponent = hass.data[DOMAIN]
component: EntityComponent[Camera] = hass.data[DOMAIN]
await asyncio.gather(
*(
cast(Camera, camera).async_refresh_providers()
for camera in component.entities
)
*(camera.async_refresh_providers() for camera in component.entities)
)
@ -343,7 +340,7 @@ def _async_get_rtsp_to_web_rtc_providers(
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the camera component."""
component = hass.data[DOMAIN] = EntityComponent(
component = hass.data[DOMAIN] = EntityComponent[Camera](
_LOGGER, DOMAIN, hass, SCAN_INTERVAL
)
@ -363,7 +360,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
async def preload_stream(_event: Event) -> None:
for camera in component.entities:
camera = cast(Camera, camera)
camera_prefs = prefs.get(camera.entity_id)
if not camera_prefs.preload_stream:
continue
@ -380,7 +376,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
def update_tokens(time: datetime) -> None:
"""Update tokens of the entities."""
for entity in component.entities:
entity = cast(Camera, entity)
entity.async_update_token()
entity.async_write_ha_state()
@ -411,13 +406,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up a config entry."""
component: EntityComponent = hass.data[DOMAIN]
component: EntityComponent[Camera] = hass.data[DOMAIN]
return await component.async_setup_entry(entry)
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
component: EntityComponent = hass.data[DOMAIN]
component: EntityComponent[Camera] = hass.data[DOMAIN]
return await component.async_unload_entry(entry)
@ -698,7 +693,7 @@ class CameraView(HomeAssistantView):
requires_auth = False
def __init__(self, component: EntityComponent) -> None:
def __init__(self, component: EntityComponent[Camera]) -> None:
"""Initialize a basic camera view."""
self.component = component
@ -707,8 +702,6 @@ class CameraView(HomeAssistantView):
if (camera := self.component.get_entity(entity_id)) is None:
raise web.HTTPNotFound()
camera = cast(Camera, camera)
authenticated = (
request[KEY_AUTHENTICATED]
or request.query.get("token") in camera.access_tokens