36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""Lovelace card bundle registration for NestQuest."""
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from homeassistant.components.frontend import add_extra_js_url
|
|
from homeassistant.components.http import StaticPathConfig
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
WWW_DIR = Path(__file__).parent / "www"
|
|
FRONTEND_URL_BASE = "/nestquest-static"
|
|
BUNDLE_FILENAME = "nestquest-cards.js"
|
|
BUNDLE_URL = f"{FRONTEND_URL_BASE}/{BUNDLE_FILENAME}"
|
|
_REGISTERED_ATTR = "_nestquest_frontend_registered"
|
|
|
|
|
|
async def async_register_frontend(hass: HomeAssistant) -> None:
|
|
"""Serve the card bundle and inject it into every Lovelace page.
|
|
|
|
Idempotent across config entries: static paths and extra JS URLs are
|
|
process-global, so a second entry must not register them again.
|
|
"""
|
|
if getattr(hass, _REGISTERED_ATTR, False):
|
|
return
|
|
await hass.http.async_register_static_paths(
|
|
[
|
|
StaticPathConfig(
|
|
FRONTEND_URL_BASE,
|
|
str(WWW_DIR),
|
|
cache_headers=False,
|
|
)
|
|
]
|
|
)
|
|
add_extra_js_url(hass, BUNDLE_URL)
|
|
setattr(hass, _REGISTERED_ATTR, True)
|