import React, { useState } from 'react'; import { Eye, CheckCircle, XCircle, MessageCircle } from 'lucide-react'; import { Link } from 'react-router-dom'; import Card, { CardContent, CardFooter } from '../common/Card'; import Button from '../common/Button'; import StatusBadge from '../common/StatusBadge'; import { Listing } from '../../types'; import { getCategoryById } from '../../data/mockData'; import { useListings } from '../../contexts/ListingContext'; interface ListingReviewCardProps { listing: Listing; } const ListingReviewCard: React.FC = ({ listing }) => { const { updateListingStatus } = useListings(); const [isUpdating, setIsUpdating] = useState(false); const [showRejectReason, setShowRejectReason] = useState(false); const [rejectReason, setRejectReason] = useState(''); const category = getCategoryById(listing.categoryId); const formatter = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, }); const handleApprove = async () => { setIsUpdating(true); try { await updateListingStatus(listing.id, 'approved'); } finally { setIsUpdating(false); } }; const handleReject = async () => { if (!showRejectReason) { setShowRejectReason(true); return; } if (!rejectReason.trim()) { return; } setIsUpdating(true); try { await updateListingStatus(listing.id, 'rejected'); // In a real app, we would save the rejection reason as well console.log(`Rejection reason for listing ${listing.id}: ${rejectReason}`); } finally { setIsUpdating(false); setShowRejectReason(false); setRejectReason(''); } }; return (
{listing.title}
{category?.name || 'Uncategorized'} ID: {listing.id.substring(0, 6)}...

{listing.title}

{listing.description}

{formatter.format(listing.price)} View
{showRejectReason && (
)}
{listing.status === 'pending' && ( <> )} {listing.status !== 'pending' && ( <> )}
); }; export default ListingReviewCard;