"""ISY utils."""
from __future__ import annotations

from homeassistant.core import HomeAssistant, callback
import homeassistant.helpers.entity_registry as er

from .const import _LOGGER, DOMAIN


@callback
def _async_cleanup_registry_entries(hass: HomeAssistant, entry_id: str) -> None:
    """Remove extra entities that are no longer part of the integration."""
    entity_registry = er.async_get(hass)
    isy_data = hass.data[DOMAIN][entry_id]

    existing_entries = er.async_entries_for_config_entry(entity_registry, entry_id)
    entities = {
        (entity.domain, entity.unique_id): entity.entity_id
        for entity in existing_entries
    }

    extra_entities = set(entities.keys()).difference(isy_data.unique_ids)
    if not extra_entities:
        return

    for entity in extra_entities:
        if entity_registry.async_is_registered(entities[entity]):
            entity_registry.async_remove(entities[entity])

    _LOGGER.debug(
        ("Cleaning up ISY entities: removed %s extra entities for config entry %s"),
        len(extra_entities),
        entry_id,
    )
