[d7b7f00] | 1 | import React, { useEffect, useState } from 'react';
|
---|
| 2 | import styles from '../../css/ProfileCss/myReviews.module.css';
|
---|
| 3 | import ReviewCard from "./ReviewCard";
|
---|
| 4 |
|
---|
| 5 | const MyReviewsSection = () => {
|
---|
| 6 | const [reviews, setReviews] = useState([]);
|
---|
| 7 |
|
---|
| 8 | useEffect(() => {
|
---|
| 9 | const fetchReviews = async () => {
|
---|
| 10 | const token = localStorage.getItem("token");
|
---|
| 11 | if (!token) {
|
---|
| 12 | alert("User not authenticated. Please log in first.");
|
---|
| 13 | return;
|
---|
| 14 | }
|
---|
| 15 |
|
---|
| 16 | try {
|
---|
| 17 | const response = await fetch('http://localhost:8080/api/reviews/user', {
|
---|
| 18 | method: 'GET',
|
---|
| 19 | headers: {
|
---|
| 20 | 'Authorization': `Bearer ${token}`,
|
---|
| 21 | 'Content-Type': 'application/json',
|
---|
| 22 | },
|
---|
| 23 | });
|
---|
| 24 |
|
---|
| 25 | if (response.ok) {
|
---|
| 26 | const data = await response.json();
|
---|
| 27 | const sortedReviews = data.sort((a, b) => b.id - a.id);
|
---|
| 28 | setReviews(sortedReviews);
|
---|
| 29 | } else {
|
---|
| 30 | console.error("Failed to fetch reviews. Status:", response.status);
|
---|
| 31 | }
|
---|
| 32 | } catch (error) {
|
---|
| 33 | console.error("Error fetching reviews:", error);
|
---|
| 34 | }
|
---|
| 35 | };
|
---|
| 36 |
|
---|
| 37 | fetchReviews();
|
---|
| 38 | }, []);
|
---|
| 39 |
|
---|
| 40 | return (
|
---|
| 41 | <div className={styles.profileSection}>
|
---|
| 42 | {reviews.length > 0 ? (
|
---|
| 43 | reviews.map((review, index) => (
|
---|
| 44 | <ReviewCard
|
---|
| 45 | key={index}
|
---|
| 46 | imageURL={review.mealThumb}
|
---|
| 47 | rating={review.rating}
|
---|
| 48 | reviewText={review.review}
|
---|
| 49 | recipeName={review.recipeName}
|
---|
| 50 | recipeId={review.recipeId}
|
---|
| 51 | isUserReview={true}
|
---|
| 52 | />
|
---|
| 53 | ))
|
---|
| 54 | ) : (
|
---|
| 55 | <p>No reviews found.</p>
|
---|
| 56 | )}
|
---|
| 57 | </div>
|
---|
| 58 | );
|
---|
| 59 | };
|
---|
| 60 |
|
---|
| 61 | export default MyReviewsSection;
|
---|