import React, { useState } from 'react'; import { Task } from '../../entities/Task'; import { Project } from '../../entities/Project'; import TaskHeader from './TaskHeader'; import TaskModal from './TaskModal'; interface TaskItemProps { task: Task; onTaskUpdate: (task: Task) => void; onTaskDelete: (taskId: number) => void; projects: Project[]; } const TaskItem: React.FC = ({ task, onTaskUpdate, onTaskDelete, projects, }) => { const [isModalOpen, setIsModalOpen] = useState(false); const [projectList, setProjectList] = useState(projects); const handleTaskClick = () => { setIsModalOpen(true); }; const handleSave = (updatedTask: Task) => { onTaskUpdate(updatedTask); setIsModalOpen(false); }; const handleDelete = () => { if (task.id) { onTaskDelete(task.id); } }; const handleCreateProject = async (name: string): Promise => { try { const response = await fetch('/api/project', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ name, active: true }), }); if (!response.ok) { throw new Error('Failed to create project'); } const newProject = await response.json(); setProjectList((prevProjects) => [...prevProjects, newProject]); return newProject; } catch (error) { console.error('Error creating project:', error); throw error; } }; const project = projectList.find((p) => p.id === task.project_id); return (
setIsModalOpen(false)} task={task} onSave={handleSave} onDelete={handleDelete} projects={projectList} onCreateProject={handleCreateProject} />
); }; export default TaskItem;