src/components/search/VulnerabilityTemplatesSearchResults.jsx
import VulnerabilityTableModel from 'components/vulnerabilities/VulnerabilityTableModel';
import { useEffect, useState } from 'react';
import secureApiFetch from '../../services/api';
import VulnerabilitiesTable from '../vulnerabilities/VulnerabilitiesTable';
const VulnerabilityTemplatesSearchResults = ({ keywords, emptyResultsSetter: setEmptyResults }) => {
const [tableModel, setTableModel] = useState(new VulnerabilityTableModel());
useEffect(() => {
const reloadData = () => {
secureApiFetch(`/vulnerabilities?isTemplate=1&keywords=${keywords}`, { method: 'GET' })
.then(resp => resp.json())
.then(vulnerabilityTemplates => {
setTableModel(tableModel => ({ ...tableModel, vulnerabilities: vulnerabilityTemplates }));
setEmptyResults(emptyResults => 0 === vulnerabilityTemplates.length ? emptyResults.concat('vulnerability_templates') : emptyResults.filter(value => value !== 'vulnerability_templates'));
})
}
reloadData()
}, [keywords, setTableModel, setEmptyResults])
if (tableModel.vulnerabilities.length === 0) return <></>
return <>
<h3>{tableModel.vulnerabilities.length} matching vulnerability templates</h3>
<VulnerabilitiesTable tableModel={tableModel} tableModelSetter={setTableModel} showSelection={false} />
</>
}
export default VulnerabilityTemplatesSearchResults;