'use client'; import { useEffect, useState, use } from 'react'; import { Skeleton } from '@/components/ui/skeleton'; import { AnalysisView } from '@/components/analyzer/analysis-view'; import { ItglueSuggestionsPanel } from '@/components/analyzer/itglue-suggestions-panel'; import type { PersistedAnalysis } from '@/lib/types/analyzer'; import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; import { PageHeader } from '@/components/navigation/page-header'; export default function AnalysisDetailPage({ params, }: { params: Promise<{ id: string }>; }) { const { id } = use(params); const [analysis, setAnalysis] = useState(null); const [error, setError] = useState(null); useEffect(() => { let cancelled = false; (async () => { try { const res = await fetch(`/api/analyzer/analyses/${id}`); if (!res.ok) { const data = (await res.json().catch(() => ({}))) as { error?: string }; throw new Error(data.error ?? `Request failed: ${res.status}`); } const { analysis } = (await res.json()) as { analysis: PersistedAnalysis }; if (!cancelled) setAnalysis(analysis); } catch (err) { if (!cancelled) setError(err instanceof Error ? err.message : 'Unknown error'); } })(); return () => { cancelled = true; }; }, [id]); const ticketNumber = analysis?.ticketNumber; return ( <>
{error && ( Couldn’t load this analysis {error} )} {!error && !analysis && (
)} {analysis && (
)}
); }