import React from 'react'; const DocumentList = ({ documents, selectedDocument, onDocumentSelected, onDocumentDeleted, onRefresh }) => { const handleDelete = async (documentId, event) => { event.stopPropagation(); if (!window.confirm('Êtes-vous sûr de vouloir supprimer ce document ?')) { return; } try { const response = await fetch(`/api/documents/${documentId}`, { method: 'DELETE', }); if (response.ok) { onDocumentDeleted(documentId); } else { console.error('Erreur suppression'); } } catch (error) { console.error('Erreur suppression:', error); } }; const getStatusClass = (status) => { switch (status) { case 'ready': return 'status-ready'; case 'uploaded': return 'status-uploaded'; case 'error': return 'status-error'; default: return 'status-uploaded'; } }; const getStatusLabel = (status) => { switch (status) { case 'ready': return 'Prêt'; case 'uploaded': return 'Uploadé'; case 'error': return 'Erreur'; default: return 'En cours'; } }; const formatFileSize = (bytes) => { if (bytes === 0) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; }; // Vérification de sécurité pour documents const safeDocuments = Array.isArray(documents) ? documents : []; return (

Liste ({safeDocuments.length})

{safeDocuments.length === 0 ? (
Aucun document
) : (
{safeDocuments.map((doc) => (
onDocumentSelected(doc)} >
{doc.filename.length > 20 ? doc.filename.substring(0, 20) + '...' : doc.filename}
{getStatusLabel(doc.status)} {doc.total_chunks && ` • ${doc.total_chunks} chunks`}
))}
)}
); }; export default DocumentList;