"use client" import { useEffect, useState } from "react" import { Star } from "lucide-react" import { useAuth } from "@/contexts/auth-context" import Link from "next/link" import { Button } from "./ui/button" interface Review { id: number product_id: number username: string rating: number comment: string createdAt: string } interface ReviewListProps { productId: number } export function ReviewList({ productId }: ReviewListProps) { const { isLoggedIn } = useAuth() const [reviews, setReviews] = useState([]) const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { const fetchReviews = async () => { setIsLoading(true) setError(null) try { const response = await fetch(`http://localhost:8080/product/${productId}/reviews`) // Добавляем логирование для отладки console.log("Response status:", response.status) const data = await response.json() console.log("Fetched reviews:", data) // Проверяем, является ли data массивом if (Array.isArray(data)) { setReviews(data) } else { setReviews([]) } } catch (error) { console.error("Error fetching reviews:", error) setError("Ошибка при загрузке отзывов") setReviews([]) } finally { setIsLoading(false) } } if (productId) { fetchReviews() } }, [productId]) if (!isLoggedIn) { return (

Чтобы просматривать отзывы, пожалуйста, войдите в систему.

) } if (isLoading) { return
Загрузка отзывов...
} if (error) { return
{error}
} return (

Отзывы покупателей

{!reviews || reviews.length === 0 ? (

Пока нет отзывов. Будьте первым!

) : ( reviews.map((review) => (
{[1, 2, 3, 4, 5].map((star) => ( ))}
{new Date(review.createdAt).toLocaleDateString()}

{review.username}

{review.comment}

)) )}
) }