import { useState } from 'react' import { useNavigate } from 'react-router-dom' import { AdminTable, type Column } from '../../components/admin/AdminTable' import { GameFormModal } from '../../components/admin/GameFormModal' import { DeleteConfirmModal } from '../../components/admin/DeleteConfirmModal' import { useGames } from '../../hooks/useGames' import { useCreateGame, useUpdateGame, useDeleteGame } from '../../hooks/useAdmin' import type { Game, CreateGameInput, UpdateGameInput } from '../../types' export function AdminGames() { const navigate = useNavigate() const { data: games = [], isLoading } = useGames() const createGame = useCreateGame() const updateGame = useUpdateGame() const deleteGame = useDeleteGame() const [showCreate, setShowCreate] = useState(false) const [editing, setEditing] = useState(null) const [deleting, setDeleting] = useState(null) const columns: Column[] = [ { header: 'Name', accessor: (g) => g.name }, { header: 'Slug', accessor: (g) => g.slug }, { header: 'Region', accessor: (g) => g.region }, { header: 'Gen', accessor: (g) => g.generation }, { header: 'Year', accessor: (g) => g.releaseYear ?? '-' }, { header: 'Actions', accessor: (g) => (
e.stopPropagation()}>
), }, ] return (

Games

navigate(`/admin/games/${g.id}`)} keyFn={(g) => g.id} /> {showCreate && ( createGame.mutate(data as CreateGameInput, { onSuccess: () => setShowCreate(false), }) } onClose={() => setShowCreate(false)} isSubmitting={createGame.isPending} /> )} {editing && ( updateGame.mutate( { id: editing.id, data: data as UpdateGameInput }, { onSuccess: () => setEditing(null) }, ) } onClose={() => setEditing(null)} isSubmitting={updateGame.isPending} /> )} {deleting && ( deleteGame.mutate(deleting.id, { onSuccess: () => setDeleting(null), }) } onCancel={() => setDeleting(null)} isDeleting={deleteGame.isPending} /> )}
) }