"""Base SamsungTV Entity."""
from __future__ import annotations

from typing import cast

from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_MAC, CONF_MODEL, CONF_NAME
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.entity import DeviceInfo, Entity

from .bridge import SamsungTVBridge
from .const import CONF_MANUFACTURER, DOMAIN


class SamsungTVEntity(Entity):
    """Defines a base SamsungTV entity."""

    def __init__(self, *, bridge: SamsungTVBridge, config_entry: ConfigEntry) -> None:
        """Initialize the SamsungTV entity."""
        self._bridge = bridge
        self._mac = config_entry.data.get(CONF_MAC)
        self._attr_name = config_entry.data.get(CONF_NAME)
        self._attr_unique_id = config_entry.unique_id
        self._attr_device_info = DeviceInfo(
            # Instead of setting the device name to the entity name, samsungtv
            # should be updated to set has_entity_name = True
            name=cast(str | None, self.name),
            manufacturer=config_entry.data.get(CONF_MANUFACTURER),
            model=config_entry.data.get(CONF_MODEL),
        )
        if self.unique_id:
            self._attr_device_info["identifiers"] = {(DOMAIN, self.unique_id)}
        if self._mac:
            self._attr_device_info["connections"] = {
                (dr.CONNECTION_NETWORK_MAC, self._mac)
            }
