import { useState, useEffect } from 'react'; import { Upload, Download, Check, AlertCircle, Loader2, X } from 'lucide-react'; import api from '../api/api'; const DeliveryPanel = ({ bookingId, photographerId, role = 'photographer' }) => { const [delivery, setDelivery] = useState(null); const [loading, setLoading] = useState(true); const [uploading, setUploading] = useState(false); const [showUploadForm, setShowUploadForm] = useState(false); useEffect(() => { fetchDelivery(); }, [bookingId]); const fetchDelivery = async () => { try { const res = await api.get(`/delivery/booking/${bookingId}`); setDelivery(res.data); } catch (err) { // Delivery record might not exist yet console.log('Delivery record not yet created'); } finally { setLoading(false); } }; const handlePhotoUpload = async (e) => { const files = e.target.files; if (!files || files.length === 0) return; setUploading(true); try { const photoUrls = Array.from(files).map(file => URL.createObjectURL(file)); const res = await api.post(`/delivery/${delivery._id}/upload`, { photoUrls, }); setDelivery(res.data); alert(`${files.length} photos uploaded!`); setShowUploadForm(false); } catch (err) { alert('Failed to upload photos'); } finally { setUploading(false); } }; const handleCompleteDelivery = async () => { try { const res = await api.post(`/delivery/${delivery._id}/complete`, { downloadLinkExpiryDays: 7, }); setDelivery(res.data); alert('Delivery marked as complete!'); } catch (err) { alert('Failed to complete delivery'); } }; if (loading) { return (
Delivery not yet created for this booking
{delivery.photos.length} Photos Uploaded
Uploading...
}Download link expires on{' '} {new Date(delivery.linkExpiresAt).toLocaleDateString()}
{delivery.revisionNotes}
{role === 'photographer' && (Please review and upload revised photos
)}