import Card from '@/components/card';
import { Ellipsis, Modal } from '@c-x/ui';
import { useEffect, useState } from 'react';
import { DomainSecurityScanningResult, DomainSecurityScanningRiskDetail } from '@/api/types';
import { getSecurityScanningDetail, getUserSecurityScanningDetail } from '@/api';
import { Box, CircularProgress, List, ListItem, ListItemButton, Stack } from '@mui/material';
interface RiskLevelBoxProps {
level: 'severe' | 'critical' | 'suggest';
}
const RiskLevelBox = ({ level }: RiskLevelBoxProps) => {
const riskConfig = {
severe: {
text: '严重',
color: 'risk.severe',
},
critical: {
text: '高风险',
color: 'risk.critical',
},
suggest: {
text: '低风险',
color: 'risk.suggest',
},
};
const config = riskConfig[level];
if (!config) return null;
return (
{config.text}
);
};
const TaskDetail = ({
task,
open,
onClose,
admin,
}: {
task?: DomainSecurityScanningResult;
open: boolean;
onClose: () => void;
admin: boolean
}) => {
const [loading, setLoading] = useState(true);
const [vulns, setVulns] = useState([]);
const fetchData = async () => {
setLoading(true);
const resp = await (admin ? getSecurityScanningDetail : getUserSecurityScanningDetail)({
id: task?.id as string
});
setVulns(resp);
setLoading(false);
};
useEffect(() => {
console.log(task)
if (open) {
fetchData();
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [task, open]);
return (
{task?.name} / {task?.project_name}
}
sx={{
'.MuiDialog-paper': {
maxWidth: 1300,
},
}}
width={1200}
open={open}
onCancel={onClose}
footer={null}
>
{loading ? (
) : (
vulns.map((vuln) => (
{vuln.desc}
{vuln.filename}:{vuln?.start?.line}
))
)}
);
};
export default TaskDetail;