// ===========================
// ScansList.tsx
// ©AngelaMos | 2025
// ===========================
import { Link } from 'react-router-dom';
import { GiMagnifyingGlass } from 'react-icons/gi';
import { useGetScans } from '@/hooks/useScan';
import { formatDate } from '@/lib/utils';
import './ScansList.css';
export const ScansList = (): React.ReactElement => {
const { data: scans, isLoading, error } = useGetScans();
if (isLoading) {
return (
);
}
if (error !== null && error !== undefined) {
return (
Failed to load scans. Please try again.
);
}
if (
scans === null ||
scans === undefined ||
!Array.isArray(scans) ||
scans.length === 0
) {
return (
No Scans Yet
Get started by running your first security scan above
);
}
return (
Target URL
Date
Tests
Vulnerabilities
Actions
{scans.map((scan) => {
const vulnerableCount = scan.test_results.filter(
(r) => r.status === 'vulnerable',
).length;
const scanDate = formatDate(scan.scan_date);
return (
{scan.target_url}
{scanDate}
{scan.test_results.length}
0
? 'scans-list__vuln-badge--danger'
: 'scans-list__vuln-badge--safe'
}`}
>
{vulnerableCount}
View Results
);
})}
);
};