import { useEffect, useState } from "react"; import { apiClient } from "../api/client"; interface CaseSelectorProps { selectedCase: string | null; onSelectCase: (caseId: string) => void; } export function CaseSelector({ selectedCase, onSelectCase, }: CaseSelectorProps) { const [cases, setCases] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const abortController = new AbortController(); const fetchCases = async () => { try { const data = await apiClient.getCases(abortController.signal); setCases(data.cases); } catch (err) { // Ignore abort errors - component unmounted if (err instanceof Error && err.name === "AbortError") return; const message = err instanceof Error ? err.message : "Unknown error"; setError(`Failed to load cases: ${message}`); } finally { if (!abortController.signal.aborted) { setIsLoading(false); } } }; fetchCases(); return () => abortController.abort(); }, []); if (isLoading) { return (

Loading cases...

); } if (error) { return (

{error}

); } return (
); }