From f2805505a1c08b98597afa3d81b6086ac188fae1 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Fri, 12 Dec 2025 10:07:15 +0100 Subject: [PATCH] Refactor FeedbackPage component: Simplify props handling and remove unused state and effects related to event and feedback management, streamlining the feedback submission process. --- app/feedback/[eventId]/page.tsx | 237 +-------------------------- components/Avatar.tsx | 2 + components/BackgroundPreferences.tsx | 43 ++--- components/FeedbackModal.tsx | 2 +- 4 files changed, 24 insertions(+), 260 deletions(-) diff --git a/app/feedback/[eventId]/page.tsx b/app/feedback/[eventId]/page.tsx index e188fd3..1e41cdb 100644 --- a/app/feedback/[eventId]/page.tsx +++ b/app/feedback/[eventId]/page.tsx @@ -9,241 +9,10 @@ interface FeedbackPageProps { }; } -export default async function FeedbackPage({ params }: FeedbackPageProps) { +export default async function FeedbackPage({ + params: _params, +}: FeedbackPageProps) { const backgroundImage = await getBackgroundImage("home", "/got-2.jpg"); return ; } - - const [event, setEvent] = useState(null); - const [existingFeedback, setExistingFeedback] = useState( - null - ); - const [loading, setLoading] = useState(true); - const [submitting, setSubmitting] = useState(false); - const [error, setError] = useState(""); - const [success, setSuccess] = useState(false); - - const [rating, setRating] = useState(0); - const [comment, setComment] = useState(""); - - const fetchEventAndFeedback = async () => { - try { - // Récupérer l'événement - const eventResponse = await fetch(`/api/events/${eventId}`); - if (!eventResponse.ok) { - setError("Événement introuvable"); - setLoading(false); - return; - } - const eventData = await eventResponse.json(); - setEvent(eventData); - - // Récupérer le feedback existant si disponible - const feedbackResponse = await fetch(`/api/feedback/${eventId}`); - if (feedbackResponse.ok) { - const feedbackData = await feedbackResponse.json(); - if (feedbackData.feedback) { - setExistingFeedback(feedbackData.feedback); - setRating(feedbackData.feedback.rating); - setComment(feedbackData.feedback.comment || ""); - } - } - } catch { - setError("Erreur lors du chargement des données"); - } finally { - setLoading(false); - } - }; - - useEffect(() => { - if (status === "unauthenticated") { - router.push(`/login?redirect=/feedback/${eventId}`); - return; - } - - if (status === "authenticated" && eventId) { - fetchEventAndFeedback(); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [status, eventId, router]); - - const handleSubmit = async (e: FormEvent) => { - e.preventDefault(); - setError(""); - setSuccess(false); - - if (rating === 0) { - setError("Veuillez sélectionner une note"); - return; - } - - setSubmitting(true); - - try { - const response = await fetch(`/api/feedback/${eventId}`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - rating, - comment: comment.trim() || null, - }), - }); - - const data = await response.json(); - - if (!response.ok) { - setError(data.error || "Erreur lors de l'enregistrement"); - return; - } - - setSuccess(true); - setExistingFeedback(data.feedback); - - // Rediriger après 2 secondes - setTimeout(() => { - router.push("/events"); - }, 2000); - } catch { - setError("Erreur lors de l'enregistrement"); - } finally { - setSubmitting(false); - } - }; - - if (status === "loading" || loading) { - return ( -
- -
-
Chargement...
-
-
- ); - } - - if (!event) { - return ( -
- -
-
Événement introuvable
-
-
- ); - } - - return ( -
- -
- {/* Background Image */} -
-
-
- - {/* Feedback Form */} -
-
-

- - FEEDBACK - -

-

- {existingFeedback - ? "Modifier votre feedback pour" - : "Donnez votre avis sur"} -

-

- {event.name} -

- - {success && ( -
- Feedback enregistré avec succès ! Redirection... -
- )} - - {error && ( -
- {error} -
- )} - -
- {/* Rating */} -
- -
- {[1, 2, 3, 4, 5].map((star) => ( - - ))} -
-

- {rating > 0 && `${rating}/5`} -

-
- - {/* Comment */} -
- -