Initial Commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""Panel for C.A.F.E."""
|
||||
import os
|
||||
import logging
|
||||
from pathlib import Path
|
||||
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.components import frontend, panel_custom
|
||||
from homeassistant.components.http import StaticPathConfig
|
||||
|
||||
from .const import DOMAIN, PANEL_TITLE, PANEL_ICON
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
PANEL_URL = f"/api/{DOMAIN}_panel"
|
||||
PANEL_NAME = f"{DOMAIN}-panel"
|
||||
|
||||
|
||||
async def async_register_panel(hass: HomeAssistant) -> None:
|
||||
"""Register the C.A.F.E. panel."""
|
||||
# Get the path to the www folder within the component
|
||||
www_path = Path(__file__).parent / "www"
|
||||
|
||||
# Register static path for the frontend assets
|
||||
await hass.http.async_register_static_paths([
|
||||
StaticPathConfig("/cafe-hass", str(www_path), False)
|
||||
])
|
||||
|
||||
# The panel wrapper has a fixed name (not hashed)
|
||||
wrapper_path = www_path / "assets" / "panel-wrapper.js"
|
||||
if not wrapper_path.exists():
|
||||
_LOGGER.error("panel-wrapper.js not found in assets directory")
|
||||
_LOGGER.error(f"www path: {www_path}, assets exist: {(www_path / 'assets').exists()}")
|
||||
return
|
||||
|
||||
# Add cache-busting parameter to force fresh load
|
||||
import time
|
||||
cache_bust = int(time.time())
|
||||
module_url = f"/cafe-hass/assets/panel-wrapper.js?v={cache_bust}"
|
||||
|
||||
# First try to unregister any existing panel
|
||||
try:
|
||||
hass.data.get("frontend_panels", {}).pop(DOMAIN, None)
|
||||
_LOGGER.info("Removed any existing panel registration")
|
||||
except:
|
||||
pass
|
||||
|
||||
# Register the panel as a custom panel with module_url
|
||||
await panel_custom.async_register_panel(
|
||||
hass,
|
||||
webcomponent_name=PANEL_NAME,
|
||||
frontend_url_path=DOMAIN,
|
||||
module_url=module_url,
|
||||
sidebar_title=PANEL_TITLE,
|
||||
sidebar_icon=PANEL_ICON,
|
||||
require_admin=True,
|
||||
config={},
|
||||
config_panel_domain=DOMAIN,
|
||||
)
|
||||
|
||||
_LOGGER.info("C.A.F.E. panel registered successfully with iframe wrapper")
|
||||
|
||||
|
||||
def async_unregister_panel(hass: HomeAssistant) -> None:
|
||||
"""Unregister the C.A.F.E. panel."""
|
||||
frontend.async_remove_panel(hass, DOMAIN)
|
||||
_LOGGER.info("C.A.F.E. panel unregistered")
|
||||
Reference in New Issue
Block a user