"""Spook - Not your homie."""
from __future__ import annotations

from typing import TYPE_CHECKING

from homeassistant.components.cloud.const import DOMAIN as CLOUD_DOMAIN
from homeassistant.helpers.entity import DeviceInfo

from ...const import DOMAIN
from ...entity import SpookEntity, SpookEntityDescription

if TYPE_CHECKING:
    from hass_nabucasa import Cloud


class HomeAssistantCloudSpookEntity(SpookEntity):
    """Defines an base Spook entity for Home Assistant Cloud related entities."""

    _cloud: Cloud

    def __init__(self, cloud: Cloud, description: SpookEntityDescription) -> None:
        """Initialize the entity."""
        super().__init__(description=description)
        self._cloud = cloud
        self._attr_device_info = DeviceInfo(
            identifiers={(DOMAIN, CLOUD_DOMAIN)},
            manufacturer="Nabu Casa Inc.",
            name="Home Assistant Cloud",
            configuration_url="https://account.nabucasa.com/",
        )
        self._attr_unique_id = f"{CLOUD_DOMAIN}_{description.key}"

    @property
    def available(self) -> bool:
        """Return if cloud services are available."""
        return (
            super().available and self._cloud.is_logged_in and self._cloud.is_connected
        )
