From 83b891d8d8d6a9e4ab6ecb174865c11f3698aa23 Mon Sep 17 00:00:00 2001 From: Ravindranbit Date: Tue, 28 Apr 2026 17:14:25 +0530 Subject: [PATCH] feat: increase upload limit to 50 and add svg support with error handling --- components/gallery/CreateEventGalleryForm.tsx | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/components/gallery/CreateEventGalleryForm.tsx b/components/gallery/CreateEventGalleryForm.tsx index bda7edf..b1a30cb 100644 --- a/components/gallery/CreateEventGalleryForm.tsx +++ b/components/gallery/CreateEventGalleryForm.tsx @@ -17,10 +17,18 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => { const [selectedImages, setSelectedImages] = useState([]); const [previewUrls, setPreviewUrls] = useState([]); + const [loading, setLoading] = useState(false); const [errors, setErrors] = useState({}); const handleFileChange = (e: ChangeEvent) => { const files = Array.from(e.target.files || []); + + if (selectedImages.length + files.length > 50) { + setErrors({ images: 'You can only upload up to 50 images at a time' }); + alert('You can only upload up to 50 images at a time'); + return; + } + const validImages: File[] = []; const previews: string[] = []; @@ -33,6 +41,7 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => { setSelectedImages(prev => [...prev, ...validImages]); setPreviewUrls(prev => [...prev, ...previews]); + setErrors(prev => ({ ...prev, images: '' })); // clear error if valid }; const handleImageDelete = (index: number) => { @@ -45,6 +54,8 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => { if (selectedImages.length === 0) { newErrors.images = 'Please upload at least one image'; + } else if (selectedImages.length > 50) { + newErrors.images = 'Only 50 images can be uploaded at a time'; } setErrors(newErrors); @@ -55,6 +66,7 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => { e.preventDefault(); if (!validateForm()) return; + setLoading(true); try { const formData = new FormData(); @@ -64,12 +76,12 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => { const uploadRes = await axios.post(buildApiUrl('upload/multiple'), formData) console.log("uploadres", uploadRes) - const uploadedUrls = uploadRes?.data?.data?.map((image: any) => image?.fullUrl) || []; + const uploadedUrls = uploadRes?.data?.data?.map((image: any) => image?.fullUrl) || []; - // Step 2: Prepare correct body for bulk save + // Step 2: Prepare body for bulk save const body = { - eventid: Number(eventId), // ensure number - imageurl: uploadedUrls // API may expect 'imageurls' not 'imageurl' + eventid: Number(eventId), + imageurl: uploadedUrls }; console.log("Sending body:", body); @@ -81,8 +93,13 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => { ); router.push(`/event-gallery?eventid=${eventId}`); - } catch (error) { + } catch (error: any) { console.error('Upload failed:', error); + const message = error.response?.data?.message || 'Failed to upload images. Please try again.'; + setErrors({ submit: message }); + alert(message); + } finally { + setLoading(false); } }; @@ -130,9 +147,10 @@ const CreateEventGalleryForm: React.FC = ({ eventId }) => {