mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 18:57:06 +00:00
Improve frontend typing (#140503)
This commit is contained in:
parent
26e3624610
commit
e710d3699c
@ -52,10 +52,9 @@ CONF_JS_VERSION = "javascript_version"
|
|||||||
DEFAULT_THEME_COLOR = "#03A9F4"
|
DEFAULT_THEME_COLOR = "#03A9F4"
|
||||||
|
|
||||||
|
|
||||||
DATA_PANELS = "frontend_panels"
|
DATA_PANELS: HassKey[dict[str, Panel]] = HassKey("frontend_panels")
|
||||||
DATA_JS_VERSION = "frontend_js_version"
|
DATA_EXTRA_MODULE_URL: HassKey[UrlManager] = HassKey("frontend_extra_module_url")
|
||||||
DATA_EXTRA_MODULE_URL = "frontend_extra_module_url"
|
DATA_EXTRA_JS_URL_ES5: HassKey[UrlManager] = HassKey("frontend_extra_js_url_es5")
|
||||||
DATA_EXTRA_JS_URL_ES5 = "frontend_extra_js_url_es5"
|
|
||||||
|
|
||||||
DATA_WS_SUBSCRIBERS: HassKey[set[tuple[websocket_api.ActiveConnection, int]]] = HassKey(
|
DATA_WS_SUBSCRIBERS: HassKey[set[tuple[websocket_api.ActiveConnection, int]]] = HassKey(
|
||||||
"frontend_ws_subscribers"
|
"frontend_ws_subscribers"
|
||||||
@ -64,8 +63,8 @@ DATA_WS_SUBSCRIBERS: HassKey[set[tuple[websocket_api.ActiveConnection, int]]] =
|
|||||||
THEMES_STORAGE_KEY = f"{DOMAIN}_theme"
|
THEMES_STORAGE_KEY = f"{DOMAIN}_theme"
|
||||||
THEMES_STORAGE_VERSION = 1
|
THEMES_STORAGE_VERSION = 1
|
||||||
THEMES_SAVE_DELAY = 60
|
THEMES_SAVE_DELAY = 60
|
||||||
DATA_THEMES_STORE = "frontend_themes_store"
|
DATA_THEMES_STORE: HassKey[Store] = HassKey("frontend_themes_store")
|
||||||
DATA_THEMES = "frontend_themes"
|
DATA_THEMES: HassKey[dict[str, Any]] = HassKey("frontend_themes")
|
||||||
DATA_DEFAULT_THEME = "frontend_default_theme"
|
DATA_DEFAULT_THEME = "frontend_default_theme"
|
||||||
DATA_DEFAULT_DARK_THEME = "frontend_default_dark_theme"
|
DATA_DEFAULT_DARK_THEME = "frontend_default_dark_theme"
|
||||||
DEFAULT_THEME = "default"
|
DEFAULT_THEME = "default"
|
||||||
@ -242,7 +241,7 @@ class Panel:
|
|||||||
sidebar_title: str | None = None
|
sidebar_title: str | None = None
|
||||||
|
|
||||||
# Url to show the panel in the frontend
|
# Url to show the panel in the frontend
|
||||||
frontend_url_path: str | None = None
|
frontend_url_path: str
|
||||||
|
|
||||||
# Config to pass to the webcomponent
|
# Config to pass to the webcomponent
|
||||||
config: dict[str, Any] | None = None
|
config: dict[str, Any] | None = None
|
||||||
@ -273,7 +272,7 @@ class Panel:
|
|||||||
self.config_panel_domain = config_panel_domain
|
self.config_panel_domain = config_panel_domain
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def to_response(self) -> PanelRespons:
|
def to_response(self) -> PanelResponse:
|
||||||
"""Panel as dictionary."""
|
"""Panel as dictionary."""
|
||||||
return {
|
return {
|
||||||
"component_name": self.component_name,
|
"component_name": self.component_name,
|
||||||
@ -631,7 +630,8 @@ class IndexView(web_urldispatcher.AbstractResource):
|
|||||||
|
|
||||||
def get_info(self) -> dict[str, list[str]]: # type: ignore[override]
|
def get_info(self) -> dict[str, list[str]]: # type: ignore[override]
|
||||||
"""Return a dict with additional info useful for introspection."""
|
"""Return a dict with additional info useful for introspection."""
|
||||||
return {"panels": list(self.hass.data[DATA_PANELS])}
|
panels = self.hass.data[DATA_PANELS]
|
||||||
|
return {"panels": list(panels)}
|
||||||
|
|
||||||
def raw_match(self, path: str) -> bool:
|
def raw_match(self, path: str) -> bool:
|
||||||
"""Perform a raw match against path."""
|
"""Perform a raw match against path."""
|
||||||
@ -841,13 +841,13 @@ def websocket_subscribe_extra_js(
|
|||||||
connection.send_message(websocket_api.result_message(msg["id"]))
|
connection.send_message(websocket_api.result_message(msg["id"]))
|
||||||
|
|
||||||
|
|
||||||
class PanelRespons(TypedDict):
|
class PanelResponse(TypedDict):
|
||||||
"""Represent the panel response type."""
|
"""Represent the panel response type."""
|
||||||
|
|
||||||
component_name: str
|
component_name: str
|
||||||
icon: str | None
|
icon: str | None
|
||||||
title: str | None
|
title: str | None
|
||||||
config: dict[str, Any] | None
|
config: dict[str, Any] | None
|
||||||
url_path: str | None
|
url_path: str
|
||||||
require_admin: bool
|
require_admin: bool
|
||||||
config_panel_domain: str | None
|
config_panel_domain: str | None
|
||||||
|
@ -12,8 +12,11 @@ from homeassistant.components import websocket_api
|
|||||||
from homeassistant.components.websocket_api import ActiveConnection
|
from homeassistant.components.websocket_api import ActiveConnection
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.storage import Store
|
from homeassistant.helpers.storage import Store
|
||||||
|
from homeassistant.util.hass_dict import HassKey
|
||||||
|
|
||||||
DATA_STORAGE = "frontend_storage"
|
DATA_STORAGE: HassKey[tuple[dict[str, Store], dict[str, dict]]] = HassKey(
|
||||||
|
"frontend_storage"
|
||||||
|
)
|
||||||
STORAGE_VERSION_USER_DATA = 1
|
STORAGE_VERSION_USER_DATA = 1
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user