source: CookCraft-FrontEnd/CookCraft-FrontEnd-master/cookcraft-app/src/components/ProfileComponents/MyReviewsSection.jsx@ d7b7f00

Last change on this file since d7b7f00 was d7b7f00, checked in by Gorazd Biskoski <gorazdbiskoskii@…>, 4 weeks ago

Add project

  • Property mode set to 100644
File size: 2.0 KB
Line 
1import React, { useEffect, useState } from 'react';
2import styles from '../../css/ProfileCss/myReviews.module.css';
3import ReviewCard from "./ReviewCard";
4
5const 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
61export default MyReviewsSection;
Note: See TracBrowser for help on using the repository browser.