// components/pages/private/TaskDetailPage/index.jsx import { useEffect } from 'react'; import { useParams } from 'react-router-dom'; import { Page, Block, Button, Spinner, Tag, Popup } from '@cap-rel/smartcommon'; import { useApi, useStates, useNavigation } from '@cap-rel/smartcommon'; import { FiEdit, FiTrash2, FiCheck } from 'react-icons/fi'; export const TaskDetailPage = () => { const { id } = useParams(); const api = useApi(); const navigate = useNavigation(); const st = useStates({ initialStates: { task: null, loading: true, error: null, showDeletePopup: false } }); useEffect(() => { loadTask(); }, [id]); const loadTask = async () => { try { const data = await api.private.get(`tasks/${id}`).json(); st.set('task', data); } catch (err) { st.set('error', err.message); } finally { st.set('loading', false); } }; const toggleComplete = async () => { const task = st.get('task'); const newStatus = task.status === 'done' ? 1 : 2; try { await api.private.put(`tasks/${id}`, { json: { status: newStatus } }); loadTask(); } catch (err) { alert('Erreur: ' + err.message); } }; const handleDelete = async () => { try { await api.private.delete(`tasks/${id}`); navigate('/'); } catch (err) { alert('Erreur: ' + err.message); } }; if (st.get('loading')) { return ; } if (st.get('error')) { return ( Erreur: {st.get('error')} ); } const task = st.get('task'); return ( {/* Statut */}
{task.status === 'done' ? 'Terminée' : 'À faire'} Ref: {task.ref}
{/* Description */} {task.description && (

{task.description}

)} {/* Dates */}
{task.date_start && (

Début: {task.date_start}

)} {task.date_end && (

Fin: {task.date_end}

)}
{/* Actions */}
{/* Popup suppression */} st.set('showDeletePopup', false)} title="Confirmer la suppression" >

Supprimer cette tâche ?

); };