import { Link } from '@tanstack/react-router' import { GlobeIcon, MapPinIcon, ServerIcon, ShieldAlertIcon } from 'lucide-react' import { useQuery } from '@tanstack/react-query' import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from '@cfdm/ui/components/sheet' import { DetailPanel } from '@/components/reui-kit/detail-panel' import { StatusBadge } from '@/components/status-badge' import { censorcheckRunQueryOptions } from '@/queries/censorcheck' import { CENSORCHECK_STATUS_LABELS, formatCheckedAt, formatVpsResources, type CensorcheckRunDto, } from './types' interface CheckRunSheetProps { run: CensorcheckRunDto | null open: boolean onOpenChange: (open: boolean) => void } export function CheckRunSheet({ run, open, onOpenChange }: CheckRunSheetProps) { const needFetch = Boolean(run && !run.results) const { data: fetched } = useQuery({ ...censorcheckRunQueryOptions(needFetch ? run?.id ?? null : null), }) const detail = run?.results ? run : fetched ?? run const title = detail?.vps?.dns || detail?.probePublicIp || 'Проверка' return ( {title} {detail ? formatCheckedAt(detail.createdAt) : 'Загрузка…'} {detail ? ( , label: 'IP', description: detail.probePublicIp, }, { id: 'vps', icon: , label: 'VPS', description: detail.matchedVpsId ? detail.vps?.dns || detail.matchedVpsId : 'Unknown VPS', footer: detail.matchedVpsId ? ( Открыть карточку ) : undefined, }, { id: 'geo', icon: , label: 'Локация', description: detail.vps?.country || '—', }, ]} />
{detail.vps ? ( {formatVpsResources(detail.vps.vcpu, detail.vps.ramGb, detail.vps.diskGb)} ) : null}
{(detail.results ?? []).map((item) => (
{item.serviceLabel} {item.category}
))}
) : (
Нет данных прогона
)}
) }