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;
|
---|