diff --git a/client/src/components/api-status.tsx b/client/src/components/api-status.tsx index 8b91ca9..8d24970 100644 --- a/client/src/components/api-status.tsx +++ b/client/src/components/api-status.tsx @@ -12,41 +12,51 @@ export default function ApiStatus({ citesToken }: ApiStatusProps) { const [iucnStatus, setIucnStatus] = useState<'checking' | 'connected' | 'error'>('checking'); const [citesStatus, setCitesStatus] = useState<'checking' | 'connected' | 'error'>('checking'); - // Check CITES API status based on token availability - useEffect(() => { - if (citesToken) { - setCitesStatus('connected'); - } else { - setCitesStatus('error'); - } - }, [citesToken]); + // Check CITES API status + const { + data: citesApiData, + isLoading: isCitesLoading + } = useQuery({ + queryKey: ['api-status-check-cites'], + queryFn: async () => { + return await apiClient.checkCitesApiStatus(); + }, + retry: 1, + staleTime: 60000, // 1 minute + }); - // Check IUCN API status by making a test request - const { isError, isSuccess, isLoading } = useQuery({ + // Check IUCN API status + const { + data: iucnApiData, + isLoading: isIucnLoading + } = useQuery({ queryKey: ['api-status-check-iucn'], queryFn: async () => { - try { - // Make a simple request to check if the IUCN API is responding - // Using a well-known species for testing - const response = await apiClient.getIucnSpeciesByName("Panthera leo"); - return response; - } catch (error) { - throw new Error("Failed to connect to IUCN API"); - } + return await apiClient.checkIucnApiStatus(); }, retry: 1, staleTime: 60000, // 1 minute }); useEffect(() => { - if (isLoading) { - setIucnStatus('checking'); - } else if (isError) { - setIucnStatus('error'); - } else if (isSuccess) { - setIucnStatus('connected'); + if (isCitesLoading) { + setCitesStatus('checking'); + } else if (citesApiData?.connected) { + setCitesStatus('connected'); + } else { + setCitesStatus('error'); } - }, [isLoading, isError, isSuccess]); + }, [isCitesLoading, citesApiData]); + + useEffect(() => { + if (isIucnLoading) { + setIucnStatus('checking'); + } else if (iucnApiData?.connected) { + setIucnStatus('connected'); + } else { + setIucnStatus('error'); + } + }, [isIucnLoading, iucnApiData]); return (