"""Emby user lookups."""

from __future__ import annotations


def _normalize_user(raw: dict) -> dict:
    return {"id": raw.get("Id", ""), "name": raw.get("Name", "")}


async def fetch_users(client) -> list[dict]:
    """Return all Emby users as ``[{"id", "name"}]``.

    ``GET /Users`` returns a bare JSON array on most Emby builds, but some return
    a ``{"Items": [...]}`` envelope. Handle both.
    """
    data = await client.get("/Users")
    raw_users = data.get("Items", []) if isinstance(data, dict) else (data or [])
    return [_normalize_user(u) for u in raw_users if u.get("Id")]


async def resolve_user_id_by_name(client, name: str) -> str | None:
    """Case-insensitive lookup of a user id by display name."""
    if not name:
        return None
    target = name.strip().casefold()
    for user in await fetch_users(client):
        if user["name"].casefold() == target:
            return user["id"]
    return None


async def get_user(client, user_id: str) -> dict | None:
    """Return ``{"id", "name"}`` for a user id, or ``None`` if not found."""
    if not user_id:
        return None
    for user in await fetch_users(client):
        if user["id"] == user_id:
            return user
    return None
