import React, { useState } from "react"; import { rentalAPI } from "../services/api"; import { Rental } from "../types"; import SuccessModal from "./SuccessModal"; import Avatar from "./Avatar"; interface ReviewItemModalProps { show: boolean; onClose: () => void; rental: Rental; onSuccess: () => void; } const ReviewItemModal: React.FC = ({ show, onClose, rental, onSuccess, }) => { const [rating, setRating] = useState(5); const [review, setReview] = useState(""); const [privateMessage, setPrivateMessage] = useState(""); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const [showSuccessModal, setShowSuccessModal] = useState(false); const [successMessage, setSuccessMessage] = useState(""); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(null); setSubmitting(true); try { const response = await rentalAPI.reviewItem(rental.id, { rating, review, privateMessage, }); // Reset form setRating(5); setReview(""); setPrivateMessage(""); // Show success modal with appropriate message if (response.data.reviewVisible) { setSuccessMessage("Review published successfully!"); } else { setSuccessMessage( "Review submitted! It will be published when both parties have reviewed or after 72 hours." ); } setShowSuccessModal(true); } catch (err: any) { setError(err.response?.data?.error || "Failed to submit review"); } finally { setSubmitting(false); } }; const handleStarClick = (value: number) => { setRating(value); }; const handleSuccessModalClose = () => { setShowSuccessModal(false); onSuccess(); onClose(); }; if (!show) return null; // Show success modal instead of review modal after successful submission if (showSuccessModal) { return ( ); } return (
Review Item
{rental.owner && rental.item && (
{rental.owner.firstName} {rental.owner.lastName}

{rental.item.name}

{new Date(rental.startDateTime).toLocaleDateString()} to{" "} {new Date(rental.endDateTime).toLocaleDateString()}
)} {error && (
{error}
)}
{[1, 2, 3, 4, 5].map((star) => ( ))}
); }; export default ReviewItemModal;