import { useState, useEffect } from "react"; import { useParams, Link } from "react-router-dom"; import { Heart, ArrowLeft, Tag, User, Calendar } from "lucide-react"; const ProductDetail = () => { const { id } = useParams(); const [product, setProduct] = useState(null); const [isFavorite, setIsFavorite] = useState(false); const [showContactForm, setShowContactForm] = useState(false); const [message, setMessage] = useState(""); const [currentImage, setCurrentImage] = useState(0); // Fetch product details useEffect(() => { const fetchProduct = async () => { try { const response = await fetch( `http://localhost:3030/api/product/get_productID/${id}`, ); if (!response.ok) throw new Error("Failed to fetch product"); const data = await response.json(); if (data.success) { setProduct(data.data); // Update the state with product details } else { throw new Error(data.message || "Error fetching product"); } } catch (error) { console.error("Error fetching product:", error); } }; fetchProduct(); }, [id]); // Handle favorite toggle const toggleFavorite = () => { setIsFavorite(!isFavorite); }; // Handle message submission const handleSendMessage = (e) => { e.preventDefault(); // Handle message logic here (send to seller) console.log("Message sent:", message); setMessage(""); setShowContactForm(false); alert("Message sent to seller!"); }; // Image navigation const nextImage = () => { setCurrentImage((prev) => prev === product.images.length - 1 ? 0 : prev + 1, ); }; const prevImage = () => { setCurrentImage((prev) => prev === 0 ? product.images.length - 1 : prev - 1, ); }; const selectImage = (index) => { setCurrentImage(index); }; if (!product) return
{product.shortDescription}
Member since {product.seller.memberSince}