from __future__ import annotations
import threading
from typing import Any

# Playstate-Verwaltung für den ViewIT Kodi Addon.
# Aktuell sind die meisten Funktionen Stubs, da Kodi die Wiedergabe-Stände selbst verwaltet.

_PLAYSTATE_CACHE: dict[str, dict[str, Any]] | None = None
_PLAYSTATE_LOCK = threading.RLock()


def playstate_key(*, plugin_name: str, title: str, season: str, episode: str) -> str:
    plugin_name = (plugin_name or "").strip()
    title = (title or "").strip()
    season = (season or "").strip()
    episode = (episode or "").strip()
    return f"{plugin_name}\t{title}\t{season}\t{episode}"


def load_playstate() -> dict[str, dict[str, Any]]:
    return {}


def save_playstate(state: dict[str, dict[str, Any]]) -> None:
    return


def get_playstate(key: str) -> dict[str, Any]:
    return {}


def set_playstate(key: str, value: dict[str, Any]) -> None:
    return


def apply_playstate_to_info(info_labels: dict[str, Any], playstate: dict[str, Any]) -> dict[str, Any]:
    return dict(info_labels or {})


def label_with_playstate(label: str, playstate: dict[str, Any]) -> str:
    return label


def title_playstate(plugin_name: str, title: str) -> dict[str, Any]:
    return get_playstate(playstate_key(plugin_name=plugin_name, title=title, season="", episode=""))


def season_playstate(plugin_name: str, title: str, season: str) -> dict[str, Any]:
    return get_playstate(playstate_key(plugin_name=plugin_name, title=title, season=season, episode=""))


def track_playback_and_update_state_async(key: str) -> None:
    # Eigenes Resume/Watched ist deaktiviert; Kodi verwaltet das selbst.
    return
