import { useProjectTasks, useCreateTask, useDeleteTask } from '../../../hooks/useTasks'; import type { ProjectDetail } from '../../../types/project.types'; import type { ProjectTask } from '../../../types/task.types'; import { ClipboardList, Pencil, Trash2 } from 'lucide-react'; import { useState } from 'react'; import CreateTaskModal from './components/CreateTaskDialog'; import EditTaskModal from './components/EditTaskDialog'; export default function TaskTab({ project }: { project: ProjectDetail }) { const { tasks, loading, error, refetch } = useProjectTasks(String(project.id)); const { remove } = useDeleteTask(); const [isModalOpen, setIsModalOpen] = useState(false); const [editModalOpen, setEditModalOpen] = useState(false); const [selectedTask, setSelectedTask] = useState(null); const handleDeleteTask = async (taskId: number) => { const ok = await remove(taskId, String(project.id)); if (ok) refetch(); }; if (loading) return (
{[...Array(3)].map((_, i) => (
))}
); if (error) return

{error}

; return (

Tasks


{tasks.length > 0 ? ( tasks.map((task, idx) => (
{task.title}
)) ) : (
Belum ada tugas yang dibuat untuk proyek ini.
)}
{isModalOpen && ( setIsModalOpen(false)} projectId={String(project.id)} onSuccess={() => { setIsModalOpen(false); refetch(); }} /> )} {editModalOpen && selectedTask && ( { setEditModalOpen(false); setSelectedTask(null); }} task={selectedTask} onSuccess={() => { setEditModalOpen(false); setSelectedTask(null); refetch(); }} /> )}
); }