"use client"; import { useState, useEffect } from "react"; import { updateSitePreferences } from "@/actions/admin/preferences"; import { Button, Card, Input } from "@/components/ui"; interface SitePreferences { id: string; eventFeedbackPoints: number; } interface EventFeedbackPointsPreferencesProps { initialPreferences: SitePreferences; } export default function EventFeedbackPointsPreferences({ initialPreferences, }: EventFeedbackPointsPreferencesProps) { const [preferences, setPreferences] = useState( initialPreferences ); const [isEditing, setIsEditing] = useState(false); const [formData, setFormData] = useState({ eventFeedbackPoints: initialPreferences.eventFeedbackPoints.toString(), }); const [isSaving, setIsSaving] = useState(false); // Synchroniser les préférences quand initialPreferences change useEffect(() => { setPreferences(initialPreferences); setFormData({ eventFeedbackPoints: initialPreferences.eventFeedbackPoints.toString(), }); }, [initialPreferences]); const handleEdit = () => { setIsEditing(true); }; const handleSave = async () => { const points = parseInt(formData.eventFeedbackPoints, 10); if (isNaN(points) || points < 0) { alert("Le nombre de points doit être un nombre positif"); return; } setIsSaving(true); try { const result = await updateSitePreferences({ eventFeedbackPoints: points, }); if (result.success && result.data) { setPreferences(result.data); setFormData({ eventFeedbackPoints: result.data.eventFeedbackPoints.toString(), }); setIsEditing(false); } else { console.error("Error updating preferences:", result.error); alert(result.error || "Erreur lors de la mise à jour"); } } catch (error) { console.error("Error updating preferences:", error); alert("Erreur lors de la mise à jour"); } finally { setIsSaving(false); } }; const handleCancel = () => { setIsEditing(false); if (preferences) { setFormData({ eventFeedbackPoints: preferences.eventFeedbackPoints.toString(), }); } }; return (

Points de feedback sur les événements

Nombre de points attribués lorsqu'un utilisateur donne un feedback à un événement (première fois uniquement)

{!isEditing && ( )}
{isEditing ? (
setFormData({ ...formData, eventFeedbackPoints: e.target.value, }) } placeholder="100" className="w-full" />

Les utilisateurs gagneront ce nombre de points lors de leur premier feedback sur un événement

) : (
Points actuels:
{preferences?.eventFeedbackPoints ?? 100} points
)}
); }