"use client"; import { useState } from "react"; import Link from "next/link"; import { Play, Pencil, Trash2, Eye, EyeOff } from "lucide-react"; import { TEMPLATE_LABELS } from "@/lib/games/types"; import type { GameSummaryDTO } from "@/lib/games/service"; export function MyGamesList({ initialGames }: { initialGames: GameSummaryDTO[] }) { const [games, setGames] = useState(initialGames); const [error, setError] = useState(null); async function togglePublish(game: GameSummaryDTO) { setError(null); const nextStatus = game.status === "published" ? "draft" : "published"; const res = await fetch(`/api/games/${game.id}`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ status: nextStatus }), }); if (!res.ok) { setError("Не удалось изменить статус публикации"); return; } setGames((gs) => gs.map((g) => (g.id === game.id ? { ...g, status: nextStatus } : g))); } async function handleDelete(id: string) { setError(null); const res = await fetch(`/api/games/${id}`, { method: "DELETE" }); if (!res.ok) { setError("Не удалось удалить игру"); return; } setGames((gs) => gs.filter((g) => g.id !== id)); } if (games.length === 0) { return

Вы ещё не создали ни одной игры.

; } return (
{error &&

{error}

} {games.map((game) => (
{TEMPLATE_LABELS[game.templateType]} {game.status === "published" ? "Опубликовано" : "Черновик"}

{game.title}

{game.playCount} игр сыграно

))}
); }