import { useState } from 'react' import { getRouteApi } from '@tanstack/react-router' import { useQuery } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { Button } from '@/shared/ui/button' import { Card, CardContent, CardHeader, CardTitle } from '@/shared/ui/card' import { CreateBugReportDialog } from './CreateBugReportDialog' import { CreateRoleRequestDialog } from './CreateRoleRequestDialog' import { TicketDetailDialog } from './TicketDetailDialog' import { TicketStatusBadge } from './TicketStatusBadge' import { listMyTickets } from './api' const PAGE_SIZE = 20 const routeApi = getRouteApi('/support') export function SupportTicketList() { const { t } = useTranslation() const navigate = routeApi.useNavigate() const { ticket: selectedTicketId } = routeApi.useSearch() const [page, setPage] = useState(1) const { data, isLoading, isError, refetch } = useQuery({ queryKey: ['my-tickets', page], queryFn: () => listMyTickets(undefined, undefined, page, PAGE_SIZE), }) return (
{isLoading &&

} {isError && (

{t('auth.genericError')}

)} {data?.items.length === 0 &&

{t('support.empty')}

} {data && data.items.length > 0 && (
{data.items.map((ticket) => ( navigate({ search: { ticket: ticket.id } })}> {t(`support.type.${ticket.type}`)}

{t('support.lastActivity', { date: new Date(ticket.lastActivityAt).toLocaleString() })}

))}
)} {data && data.total > PAGE_SIZE && (
)} {selectedTicketId && ( !open && navigate({ search: {} })} /> )}
) }