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 { 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;