| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- """Register_commands."""
- from __future__ import annotations
- from typing import TYPE_CHECKING, Any
- from homeassistant.components import websocket_api
- from homeassistant.core import HomeAssistant, callback
- from homeassistant.helpers.dispatcher import async_dispatcher_connect
- import voluptuous as vol
- from ..const import DOMAIN
- from .critical import hacs_critical_acknowledge, hacs_critical_list
- from .repositories import (
- hacs_repositories_add,
- hacs_repositories_clear_new,
- hacs_repositories_list,
- hacs_repositories_remove,
- hacs_repositories_removed,
- )
- from .repository import (
- hacs_repository_beta,
- hacs_repository_download,
- hacs_repository_ignore,
- hacs_repository_info,
- hacs_repository_refresh,
- hacs_repository_release_notes,
- hacs_repository_remove,
- hacs_repository_state,
- hacs_repository_version,
- )
- if TYPE_CHECKING:
- from ..base import HacsBase
- @callback
- def async_register_websocket_commands(hass: HomeAssistant) -> None:
- """Register_commands."""
- websocket_api.async_register_command(hass, hacs_info)
- websocket_api.async_register_command(hass, hacs_subscribe)
- websocket_api.async_register_command(hass, hacs_repository_info)
- websocket_api.async_register_command(hass, hacs_repository_download)
- websocket_api.async_register_command(hass, hacs_repository_ignore)
- websocket_api.async_register_command(hass, hacs_repository_state)
- websocket_api.async_register_command(hass, hacs_repository_version)
- websocket_api.async_register_command(hass, hacs_repository_beta)
- websocket_api.async_register_command(hass, hacs_repository_refresh)
- websocket_api.async_register_command(hass, hacs_repository_release_notes)
- websocket_api.async_register_command(hass, hacs_repository_remove)
- websocket_api.async_register_command(hass, hacs_critical_acknowledge)
- websocket_api.async_register_command(hass, hacs_critical_list)
- websocket_api.async_register_command(hass, hacs_repositories_list)
- websocket_api.async_register_command(hass, hacs_repositories_add)
- websocket_api.async_register_command(hass, hacs_repositories_clear_new)
- websocket_api.async_register_command(hass, hacs_repositories_removed)
- websocket_api.async_register_command(hass, hacs_repositories_remove)
- @websocket_api.websocket_command(
- {
- vol.Required("type"): "hacs/subscribe",
- vol.Required("signal"): str,
- }
- )
- @websocket_api.require_admin
- @websocket_api.async_response
- async def hacs_subscribe(
- hass: HomeAssistant,
- connection: websocket_api.ActiveConnection,
- msg: dict,
- ) -> None:
- """Handle websocket subscriptions."""
- @callback
- def forward_messages(data: dict | None = None):
- """Forward events to websocket."""
- connection.send_message(websocket_api.event_message(msg["id"], data))
- connection.subscriptions[msg["id"]] = async_dispatcher_connect(
- hass,
- msg["signal"],
- forward_messages,
- )
- connection.send_message(websocket_api.result_message(msg["id"]))
- @websocket_api.websocket_command(
- {
- vol.Required("type"): "hacs/info",
- }
- )
- @websocket_api.require_admin
- @websocket_api.async_response
- async def hacs_info(
- hass: HomeAssistant,
- connection: websocket_api.ActiveConnection,
- msg: dict[str, Any],
- ) -> None:
- """Return information about HACS."""
- hacs: HacsBase = hass.data.get(DOMAIN)
- connection.send_message(
- websocket_api.result_message(
- msg["id"],
- {
- "categories": hacs.common.categories,
- "country": hacs.configuration.country,
- "debug": hacs.configuration.debug,
- "dev": hacs.configuration.dev,
- "disabled_reason": hacs.system.disabled_reason,
- "experimental": hacs.configuration.experimental,
- "has_pending_tasks": hacs.queue.has_pending_tasks,
- "lovelace_mode": hacs.core.lovelace_mode,
- "stage": hacs.stage,
- "startup": hacs.status.startup,
- "version": hacs.version,
- },
- )
- )
|