diff --git a/client/src/components/media-upload.tsx b/client/src/components/media-upload.tsx index 6200180..e8fa4b3 100644 --- a/client/src/components/media-upload.tsx +++ b/client/src/components/media-upload.tsx @@ -95,8 +95,8 @@ export default function MediaUpload() { const { getRootProps, getInputProps, isDragActive, open } = useDropzone({ onDrop, accept: { - "image/*": [".png", ".jpg", ".jpeg", ".gif"], - "video/*": [".mp4", ".mov"], + "image/*": [".png", ".jpg", ".jpeg", ".gif", ".webp"], + "video/*": [".mp4", ".mov", ".webm", ".3gp", ".3gpp", ".mkv", ".avi"], }, maxSize: 52428800, multiple: true, @@ -115,13 +115,35 @@ export default function MediaUpload() { const handleCameraCapture = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { + // Logs de diagnostic pour Android + console.log('đŸ“č Capture camera dĂ©tectĂ©e:', { + nom: file.name, + type: file.type, + taille: `${(file.size / 1024 / 1024).toFixed(2)} MB`, + estVideo: file.type.startsWith('video/') + }); + // Correction Android : crĂ©er un nom valide si le fichier n'a pas de nom let fileToUpload = file; if (!file.name || file.name === 'blob' || file.name === '') { const extension = file.type.split('/')[1] || 'jpg'; const newFileName = `camera-${Date.now()}.${extension}`; fileToUpload = new File([file], newFileName, { type: file.type }); + console.log('✅ Nom de fichier corrigĂ©:', newFileName); } + + // VĂ©rification taille (50 MB max) + if (file.size > 52428800) { + toast({ + title: "Fichier trop volumineux", + description: `La taille maximale est de 50 MB. Votre fichier fait ${(file.size / 1024 / 1024).toFixed(2)} MB`, + variant: "destructive", + }); + console.error('❌ Fichier rejetĂ©: trop volumineux'); + e.target.value = ''; + return; + } + uploadMutation.mutate(fileToUpload); // RĂ©initialiser l'input pour permettre de capturer la mĂȘme photo Ă  nouveau e.target.value = ''; diff --git a/client/src/pages/new-post.tsx b/client/src/pages/new-post.tsx index d817c7c..070ee8d 100644 --- a/client/src/pages/new-post.tsx +++ b/client/src/pages/new-post.tsx @@ -180,8 +180,8 @@ export default function NewPost() { const { getRootProps, getInputProps, isDragActive, open } = useDropzone({ onDrop, accept: { - "image/*": [".png", ".jpg", ".jpeg", ".gif"], - "video/*": [".mp4", ".mov"], + "image/*": [".png", ".jpg", ".jpeg", ".gif", ".webp"], + "video/*": [".mp4", ".mov", ".webm", ".3gp", ".3gpp", ".mkv", ".avi"], }, maxSize: 52428800, noClick: true, @@ -299,13 +299,34 @@ export default function NewPost() { const handleCameraCapture = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { + // Logs de diagnostic pour Android + console.log('đŸ“č Capture camera dĂ©tectĂ©e:', { + nom: file.name, + type: file.type, + taille: `${(file.size / 1024 / 1024).toFixed(2)} MB`, + estVideo: file.type.startsWith('video/') + }); + // Correction Android : crĂ©er un nom valide si le fichier n'a pas de nom let fileToUpload = file; if (!file.name || file.name === 'blob' || file.name === '') { const extension = file.type.split('/')[1] || 'jpg'; const newFileName = `camera-${Date.now()}.${extension}`; fileToUpload = new File([file], newFileName, { type: file.type }); + console.log('✅ Nom de fichier corrigĂ©:', newFileName); } + + // VĂ©rification taille (50 MB max) + if (file.size > 52428800) { + toast({ + title: "Fichier trop volumineux", + description: `La taille maximale est de 50 MB. Votre fichier fait ${(file.size / 1024 / 1024).toFixed(2)} MB`, + variant: "destructive", + }); + console.error('❌ Fichier rejetĂ©: trop volumineux'); + return; + } + uploadMutation.mutate(fileToUpload); } };