from __future__ import annotations

import os
from enum import Enum, auto

import gi

gi.require_version("GObject", "2.0")
from gi.repository import GObject  # NOQA: E402


class FileType(Enum):
    DIRECTORY = auto()
    VIDEO = auto()


class FileItem(GObject.Object):
    __gtype_name__ = "FileItem"

    def __init__(
        self,
        name: str,
        file_type: FileType,
        full_path: str,
    ):
        super().__init__()
        self.name = name
        self.file_type = file_type
        self.full_path = full_path

    @staticmethod
    def from_path(path: str) -> FileItem:
        name = os.path.basename(path)
        if path.endswith("/"):
            return FileItem(name, FileType.DIRECTORY, path)

        parts = name.split(".")
        suffix = parts[-1].lower() if len(parts) >= 2 else ""

        if suffix in ("mkv", "mp4", "avi"):
            return FileItem(name, FileType.VIDEO, path)

        raise ValueError(f"Unsupported file type: {path}")