import React, { useState } from 'react'; import ImageBlurEditor from '../components/ImageBlurEditor'; import axios from 'axios'; const ModerationImageModule = ({ images, saveUrlTemplate, rawDir, maskedDir }) => { const [currentImages, setCurrentImages] = useState(images); const [editingImage, setEditingImage] = useState(null); const [isSaving, setIsSaving] = useState(false); const handleOpenEditor = (image) => { setEditingImage(image); }; const handleSaveBlur = async (dataUrl) => { setIsSaving(true); const url = saveUrlTemplate.replace('__ID__', editingImage.id); try { const response = await axios.post(url, { image_data: dataUrl }, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }); if (response.data.success) { // Update local state without reload setCurrentImages(prev => prev.map(img => img.id === editingImage.id ? { ...img, imagePublic: response.data.imagePublic, isMasked: true } : img )); setEditingImage(null); // Optional: show a small toast or success message if available } } catch (error) { console.error('Erreur lors de la sauvegarde:', error); alert('Erreur lors de la sauvegarde.'); } finally { setIsSaving(false); } }; if (!currentImages) { return
Aucune image à afficher.
; } return (
{currentImages.map((image, index) => { if (!image) return null; const isMasked = image.isMasked || !!image.imagePublic; return (
Image {index + 1}
{isMasked ? 'Sécurisée (Floutée)' : 'Brute (Non sécurisée)'}
{/* Original Image Section */}

Version Brute

Brute
{/* Masked Image Section (Visualized only if exists) */} {isMasked && (

Version Floutée

Floutée { e.target.src = 'https://via.placeholder.com/200?text=Erreur+Génération'; }} />
)}
); })}
{/* Modal Overlay for Editor... */} {/* Modal Overlay for Editor */} {editingImage && (
Floutage de l'image {currentImages.indexOf(editingImage) + 1}
{isSaving ? (

Sauvegarde de l'image masquée...

) : ( setEditingImage(null)} /> )}
)}
); }; export default ModerationImageModule;