'use client';
import {
Grid,
Paper,
Button,
Dialog,
DialogTitle,
DialogContent,
DialogContentText,
DialogActions,
Typography
} from '@mui/material';
import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';
import { useTranslation } from 'react-i18next';
import { useState } from 'react';
import ProjectCard from './ProjectCard';
export default function ProjectList({ projects, onCreateProject }) {
const { t } = useTranslation();
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
const [projectToDelete, setProjectToDelete] = useState(null);
const [loading, setLoading] = useState(false);
// 打开删除确认对话框
const handleOpenDeleteDialog = (event, project) => {
setProjectToDelete(project);
setDeleteDialogOpen(true);
};
// 关闭删除确认对话框
const handleCloseDeleteDialog = () => {
setDeleteDialogOpen(false);
setProjectToDelete(null);
};
// 删除项目
const handleDeleteProject = async () => {
if (!projectToDelete) return;
try {
setLoading(true);
const response = await fetch(`/api/projects/${projectToDelete.id}`, {
method: 'DELETE'
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(errorData.error || t('projects.deleteFailed'));
}
// 刷新页面以更新项目列表
window.location.reload();
} catch (error) {
console.error('删除项目失败:', error);
alert(error.message || t('projects.deleteFailed'));
} finally {
setLoading(false);
handleCloseDeleteDialog();
}
};
return (
<>
{projects.length === 0 ? (
{t('projects.noProjects')}
} sx={{ mt: 2 }}>
{t('projects.createFirst')}
) : (
projects.map(project => (
))
)}
{/* 删除确认对话框 */}
>
);
}