# models.py - Versione completamente compatibile con Python 3.8
"""
Modelli di base per l'add‑on  plugin.video.torproxy
Versione semplificata e compatibile al 100% con Python 3.8 (Kodi 21).
"""

from dataclasses import dataclass
from typing import Optional, Sequence, Tuple, Any

# ----------------------------------------------------------------------
# Classi di base (senza type hints avanzati)
# ----------------------------------------------------------------------
@dataclass
class Item:
    # Campi base richiesti
    title: str
    type: str = "file"          # valore di default per evitare l’errore
    mode: str = ""

    # Campi opzionali (usati dal codice esistente)
    title2: Optional[str] = None
    thumbnail: Optional[str] = None
    fanart: Optional[str] = None
    link: Optional[str] = None
    contextmenu: Optional[Sequence[Tuple[str, str]]] = None
    is_media: bool = True
    is_search: bool = False

    def url_encode(self):
        """Costruisce la query‑string per gli URL di Kodi."""
        from urllib.parse import urlencode

        params = {}
        if self.title:
            params["title"] = self.title
        if self.mode:
            params["mode"] = self.mode
        if self.title2:
            params["title2"] = self.title2
        if self.thumbnail:
            params["thumbnail"] = self.thumbnail
        if self.link:
            params["link"] = self.link

        # Booleani come stringhe (Kodi li legge così)
        params["is_media"] = str(self.is_media)
        params["is_search"] = str(self.is_search)

        return urlencode(params)


@dataclass
class Category(Item):
    """Rappresenta una categoria."""
    pass


@dataclass
class Channel(Item):
    """Rappresenta un canale."""
    pass
