0.6.4
This commit is contained in:
@@ -3,9 +3,10 @@ from __future__ import annotations
|
|||||||
import logging
|
import logging
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
from homeassistant.const import EVENT_HOMEASSISTANT_STARTED
|
||||||
from homeassistant.components.panel_custom import async_register_panel
|
from homeassistant.components.panel_custom import async_register_panel
|
||||||
from homeassistant.helpers.event import async_track_time_interval
|
from homeassistant.helpers.event import async_track_time_interval, async_call_later
|
||||||
from homeassistant.helpers.discovery import async_load_platform
|
from homeassistant.helpers.discovery import async_load_platform
|
||||||
|
|
||||||
from .core import BCSCore, BCSConfig, BCSError
|
from .core import BCSCore, BCSConfig, BCSError
|
||||||
@@ -64,17 +65,30 @@ async def async_setup(hass: HomeAssistant, config: dict) -> bool:
|
|||||||
frontend_url_path="bahmcloud-store",
|
frontend_url_path="bahmcloud-store",
|
||||||
webcomponent_name="bahmcloud-store-panel",
|
webcomponent_name="bahmcloud-store-panel",
|
||||||
# IMPORTANT: bump v to avoid caching old JS
|
# IMPORTANT: bump v to avoid caching old JS
|
||||||
module_url="/api/bahmcloud_store_static/panel.js?v=106",
|
module_url="/api/bahmcloud_store_static/panel.js?v=107",
|
||||||
sidebar_title="Bahmcloud Store",
|
sidebar_title="Bahmcloud Store",
|
||||||
sidebar_icon="mdi:store",
|
sidebar_icon="mdi:store",
|
||||||
require_admin=True,
|
require_admin=True,
|
||||||
config={},
|
config={},
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
# IMPORTANT:
|
||||||
await core.full_refresh(source="startup")
|
# Do NOT block Home Assistant startup with network-heavy refreshes.
|
||||||
except BCSError as e:
|
# We wait until HA has fully started, then kick off the initial refresh.
|
||||||
_LOGGER.error("Initial refresh failed: %s", e)
|
async def _startup_refresh() -> None:
|
||||||
|
try:
|
||||||
|
await core.full_refresh(source="startup")
|
||||||
|
except BCSError as e:
|
||||||
|
_LOGGER.error("Initial refresh failed: %s", e)
|
||||||
|
except Exception:
|
||||||
|
_LOGGER.exception("Unexpected error during initial refresh")
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def _schedule_startup_refresh(_event=None) -> None:
|
||||||
|
# Give HA a short head-start (UI, recorder, etc.) before we start fetching lots of data.
|
||||||
|
async_call_later(hass, 30, lambda _now: hass.async_create_task(_startup_refresh()))
|
||||||
|
|
||||||
|
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STARTED, _schedule_startup_refresh)
|
||||||
|
|
||||||
async def periodic(_now) -> None:
|
async def periodic(_now) -> None:
|
||||||
try:
|
try:
|
||||||
@@ -87,4 +101,4 @@ async def async_setup(hass: HomeAssistant, config: dict) -> bool:
|
|||||||
interval_seconds = int(getattr(core, "refresh_seconds", 300) or 300)
|
interval_seconds = int(getattr(core, "refresh_seconds", 300) or 300)
|
||||||
async_track_time_interval(hass, periodic, timedelta(seconds=interval_seconds))
|
async_track_time_interval(hass, periodic, timedelta(seconds=interval_seconds))
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user