import DeleteModal from '@/components/inertia/delete-modal'; import InputError from '@/components/input-error'; import LoadingButton from '@/components/loading-button'; import TableFooter from '@/components/table/table-footer'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { cn } from '@/lib/utils'; import { CoursePlayerProps } from '@/types/page'; import { useForm, usePage } from '@inertiajs/react'; import { format } from 'date-fns'; import { Star, Trash } from 'lucide-react'; import { useState } from 'react'; import { toast } from 'sonner'; import ReviewEdit from './review-edit'; const ReviewForm = () => { const { props } = usePage(); const { translate } = props; const { button, input, frontend, common } = translate; const [hoverRating, setHoverRating] = useState(0); const { data, setData, post, errors, processing, reset } = useForm({ rating: 0, review: '', user_id: props.auth.user.id, course_id: props.course.id, }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); post(route('course-reviews.store'), { onError: (errors) => { if (errors.user_id) { toast.error(errors.user_id); } if (errors.course_id) { toast.error(errors.course_id); } }, onSuccess: () => { reset(); }, }); }; return (
{props.course.instructor.user_id !== props.auth.user.id && (

{props.userReview ? frontend.review : frontend.submit_review}

{props.userReview && (
} />
)}
{props.userReview ? (
{[1, 2, 3, 4, 5].map((star) => ( ))}

{props.userReview.review}

) : (
{/* Star Rating */}
{[1, 2, 3, 4, 5].map((star) => ( ))}
{data.rating > 0 && (

{frontend.you_rated_this} {data.rating} {data.rating !== 1 ? frontend.stars : frontend.star}

)}
{/* Comment Field */}