import React, { useEffect, useState } from "react"; import { useParams, useNavigate } from "react-router-dom"; import { Task } from "../../entities/Task"; import { Project } from "../../entities/Project"; import TaskModal from "./TaskModal"; import { fetchTaskByUuid, updateTask, deleteTask } from "../../utils/tasksService"; import { createProject } from "../../utils/projectsService"; import { useStore } from "../../store/useStore"; const TaskView: React.FC = () => { const { uuid } = useParams<{ uuid: string }>(); const navigate = useNavigate(); const store = useStore(); const [task, setTask] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchTask = async () => { if (!uuid) { setError("No task UUID provided"); setLoading(false); return; } try { const taskData = await fetchTaskByUuid(uuid); setTask(taskData); } catch (err) { setError("An error occurred while fetching the task"); } finally { setLoading(false); } }; fetchTask(); }, [uuid]); const handleClose = () => { navigate(-1); // Go back to previous page }; const handleTaskUpdate = async (updatedTask: Task) => { try { if (task?.id) { const updated = await updateTask(task.id, updatedTask); setTask(updated); } } catch (error) { console.error("Error updating task:", error); } }; const handleTaskDelete = async (taskId: number) => { try { await deleteTask(taskId); navigate('/today'); // Navigate back to today view after deletion } catch (error) { console.error("Error deleting task:", error); throw error; } }; const handleCreateProject = async (name: string): Promise => { try { return await createProject({ name }); } catch (error) { console.error("Error creating project:", error); throw error; } }; if (loading) { return (
Loading task...
); } if (error || !task) { return (
{error || "Task not found"}
); } return ( ); }; export default TaskView;