"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { FaStar } from "react-icons/fa"; import { t } from "@/utils"; import { addItemReviewApi } from "@/utils/api"; import { toast } from "sonner"; const GiveReview = ({ itemId, setSelectedChatDetails, setBuyer }) => { const [rating, setRating] = useState(0); const [hoveredRating, setHoveredRating] = useState(0); const [review, setReview] = useState(""); const [errors, setErrors] = useState({ rating: "", review: "", }); const [isSubmitting, setIsSubmitting] = useState(false); const handleRatingClick = (selectedRating) => { setRating(selectedRating); setErrors((prev) => ({ ...prev, rating: "" })); }; const handleMouseEnter = (starValue) => { setHoveredRating(starValue); }; const handleMouseLeave = () => { setHoveredRating(0); }; const handleReviewChange = (e) => { setReview(e.target.value); setErrors((prev) => ({ ...prev, review: "" })); }; const validateForm = () => { const newErrors = { rating: "", review: "", }; let isValid = true; if (rating === 0) { newErrors.rating = t("pleaseSelectRating"); isValid = false; } if (!review.trim()) { newErrors.review = t("pleaseWriteReview"); isValid = false; } setErrors(newErrors); return isValid; }; const handleSubmit = async () => { if (!validateForm()) { return; } try { setIsSubmitting(true); const res = await addItemReviewApi.addItemReview({ item_id: itemId, review, ratings: rating, }); if (res?.data?.error === false) { toast.success(res?.data?.message); setSelectedChatDetails((prev) => ({ ...prev, item: { ...prev.item, review: res?.data?.data, }, })); setBuyer((prev) => ({ ...prev, BuyerChatList: prev.BuyerChatList.map((chatItem) => chatItem?.item?.id === Number(res?.data?.data?.item_id) ? { ...chatItem, item: { ...chatItem.item, review: res?.data?.data?.review, // use review from API }, } : chatItem ), })); setRating(0); setReview(""); setErrors({ rating: "", review: "", }); } else { toast.error(res?.data?.message); } } catch (error) { console.log(error); toast.error(t("somethingWentWrong")); } finally { setIsSubmitting(false); } }; return (

{t("rateSeller")}

{t("rateYourExp")}

{[1, 2, 3, 4, 5].map((starValue) => ( ))}
{errors.rating && (

{errors.rating}

)}