import { useEffect, useState } from "react"; import "../../styles/ConfirmBuyModal.css"; export default function ConfirmBuyModal({ item, onConfirm, onCancel, allItems = [], onNavigate }) { const [quantity, setQuantity] = useState(item.quantity); const [isSubmitting, setIsSubmitting] = useState(false); const maxQuantity = item.quantity; useEffect(() => { setQuantity(item.quantity); setIsSubmitting(false); }, [item.id, item.quantity]); const currentIndex = allItems.findIndex((listItem) => listItem.id === item.id); const hasPrev = currentIndex > 0; const hasNext = currentIndex < allItems.length - 1; const handleIncrement = () => { if (!isSubmitting && quantity < maxQuantity) { setQuantity((prev) => prev + 1); } }; const handleDecrement = () => { if (!isSubmitting && quantity > 1) { setQuantity((prev) => prev - 1); } }; const handleConfirm = async () => { if (isSubmitting) return; setIsSubmitting(true); try { await onConfirm(quantity); } finally { setIsSubmitting(false); } }; const handlePrev = () => { if (isSubmitting) return; if (hasPrev && onNavigate) { onNavigate(allItems[currentIndex - 1]); } }; const handleNext = () => { if (isSubmitting) return; if (hasNext && onNavigate) { onNavigate(allItems[currentIndex + 1]); } }; const imageUrl = item.item_image && item.image_mime_type ? `data:${item.image_mime_type};base64,${item.item_image}` : null; return (