import { useEffect } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Camera, X } from 'lucide-react'; import { PhotoType } from '@/types/sale'; interface CameraModalProps { isOpen: boolean; photoType: PhotoType | null; videoRef: React.RefObject; canvasRef: React.RefObject; isCapturing: boolean; onClose: () => void; onCapture: () => void; } export default function CameraModal({ isOpen, photoType, videoRef, canvasRef, isCapturing, onClose, onCapture }: CameraModalProps) { useEffect(() => { if (isOpen && videoRef.current) { const video = videoRef.current; console.log('CameraModal useEffect - video element ready'); const handleLoadedMetadata = () => { console.log('CameraModal: Video metadata loaded, dimensions:', video.videoWidth, 'x', video.videoHeight); }; const handleCanPlay = () => { console.log('CameraModal: Video can play, readyState:', video.readyState); }; const handleError = (error: Event) => { console.error('CameraModal: Video error event:', error); }; const handlePlay = () => { console.log('CameraModal: Video started playing'); }; video.addEventListener('loadedmetadata', handleLoadedMetadata); video.addEventListener('canplay', handleCanPlay); video.addEventListener('error', handleError); video.addEventListener('play', handlePlay); // Forcer le play avec gestion d'erreur const startPlayback = async () => { try { await video.play(); console.log('CameraModal: Video play() successful'); } catch (playError) { console.error('CameraModal: Video play() failed:', playError); } }; startPlayback(); return () => { video.removeEventListener('loadedmetadata', handleLoadedMetadata); video.removeEventListener('canplay', handleCanPlay); video.removeEventListener('error', handleError); video.removeEventListener('play', handlePlay); }; } }, [isOpen, videoRef]); return ( Photo {photoType ? photoType.charAt(0).toUpperCase() + photoType.slice(1) : ''}
); }