mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Add websocket type hints in lovelace (#80537)
This commit is contained in:
parent
3f8362fe1c
commit
eee1ede5bb
@ -1,23 +1,31 @@
|
|||||||
"""Websocket API for Lovelace."""
|
"""Websocket API for Lovelace."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components import websocket_api
|
from homeassistant.components import websocket_api
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
|
|
||||||
from .const import CONF_URL_PATH, DOMAIN, ConfigNotFound
|
from .const import CONF_URL_PATH, DOMAIN, ConfigNotFound
|
||||||
|
from .dashboard import LovelaceStorage
|
||||||
|
|
||||||
|
|
||||||
def _handle_errors(func):
|
def _handle_errors(func):
|
||||||
"""Handle error with WebSocket calls."""
|
"""Handle error with WebSocket calls."""
|
||||||
|
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
async def send_with_error_handling(hass, connection, msg):
|
async def send_with_error_handling(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
url_path = msg.get(CONF_URL_PATH)
|
url_path = msg.get(CONF_URL_PATH)
|
||||||
config = hass.data[DOMAIN]["dashboards"].get(url_path)
|
config: LovelaceStorage | None = hass.data[DOMAIN]["dashboards"].get(url_path)
|
||||||
|
|
||||||
if config is None:
|
if config is None:
|
||||||
connection.send_error(
|
connection.send_error(
|
||||||
@ -44,7 +52,11 @@ def _handle_errors(func):
|
|||||||
|
|
||||||
@websocket_api.websocket_command({"type": "lovelace/resources"})
|
@websocket_api.websocket_command({"type": "lovelace/resources"})
|
||||||
@websocket_api.async_response
|
@websocket_api.async_response
|
||||||
async def websocket_lovelace_resources(hass, connection, msg):
|
async def websocket_lovelace_resources(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
"""Send Lovelace UI resources over WebSocket configuration."""
|
"""Send Lovelace UI resources over WebSocket configuration."""
|
||||||
resources = hass.data[DOMAIN]["resources"]
|
resources = hass.data[DOMAIN]["resources"]
|
||||||
|
|
||||||
@ -64,7 +76,12 @@ async def websocket_lovelace_resources(hass, connection, msg):
|
|||||||
)
|
)
|
||||||
@websocket_api.async_response
|
@websocket_api.async_response
|
||||||
@_handle_errors
|
@_handle_errors
|
||||||
async def websocket_lovelace_config(hass, connection, msg, config):
|
async def websocket_lovelace_config(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
config: LovelaceStorage,
|
||||||
|
) -> None:
|
||||||
"""Send Lovelace UI config over WebSocket configuration."""
|
"""Send Lovelace UI config over WebSocket configuration."""
|
||||||
return await config.async_load(msg["force"])
|
return await config.async_load(msg["force"])
|
||||||
|
|
||||||
@ -79,7 +96,12 @@ async def websocket_lovelace_config(hass, connection, msg, config):
|
|||||||
)
|
)
|
||||||
@websocket_api.async_response
|
@websocket_api.async_response
|
||||||
@_handle_errors
|
@_handle_errors
|
||||||
async def websocket_lovelace_save_config(hass, connection, msg, config):
|
async def websocket_lovelace_save_config(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
config: LovelaceStorage,
|
||||||
|
) -> None:
|
||||||
"""Save Lovelace UI configuration."""
|
"""Save Lovelace UI configuration."""
|
||||||
await config.async_save(msg["config"])
|
await config.async_save(msg["config"])
|
||||||
|
|
||||||
@ -93,14 +115,23 @@ async def websocket_lovelace_save_config(hass, connection, msg, config):
|
|||||||
)
|
)
|
||||||
@websocket_api.async_response
|
@websocket_api.async_response
|
||||||
@_handle_errors
|
@_handle_errors
|
||||||
async def websocket_lovelace_delete_config(hass, connection, msg, config):
|
async def websocket_lovelace_delete_config(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
config: LovelaceStorage,
|
||||||
|
) -> None:
|
||||||
"""Delete Lovelace UI configuration."""
|
"""Delete Lovelace UI configuration."""
|
||||||
await config.async_delete()
|
await config.async_delete()
|
||||||
|
|
||||||
|
|
||||||
@websocket_api.websocket_command({"type": "lovelace/dashboards/list"})
|
@websocket_api.websocket_command({"type": "lovelace/dashboards/list"})
|
||||||
@callback
|
@callback
|
||||||
def websocket_lovelace_dashboards(hass, connection, msg):
|
def websocket_lovelace_dashboards(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
connection: websocket_api.ActiveConnection,
|
||||||
|
msg: dict[str, Any],
|
||||||
|
) -> None:
|
||||||
"""Delete Lovelace UI configuration."""
|
"""Delete Lovelace UI configuration."""
|
||||||
connection.send_result(
|
connection.send_result(
|
||||||
msg["id"],
|
msg["id"],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user