"use client"; import { useState, useEffect } from "react"; import { updateSitePreferences } from "@/actions/admin/preferences"; import { Button, Card, Input } from "@/components/ui"; interface SitePreferences { id: string; eventRegistrationPoints: number; } interface EventPointsPreferencesProps { initialPreferences: SitePreferences; } export default function EventPointsPreferences({ initialPreferences, }: EventPointsPreferencesProps) { const [preferences, setPreferences] = useState( initialPreferences ); const [isEditing, setIsEditing] = useState(false); const [formData, setFormData] = useState({ eventRegistrationPoints: initialPreferences.eventRegistrationPoints.toString(), }); const [isSaving, setIsSaving] = useState(false); // Synchroniser les préférences quand initialPreferences change useEffect(() => { setPreferences(initialPreferences); setFormData({ eventRegistrationPoints: initialPreferences.eventRegistrationPoints.toString(), }); }, [initialPreferences]); const handleEdit = () => { setIsEditing(true); }; const handleSave = async () => { const points = parseInt(formData.eventRegistrationPoints, 10); if (isNaN(points) || points < 0) { alert("Le nombre de points doit être un nombre positif"); return; } setIsSaving(true); try { const result = await updateSitePreferences({ eventRegistrationPoints: points, }); if (result.success && result.data) { setPreferences(result.data); setFormData({ eventRegistrationPoints: result.data.eventRegistrationPoints.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({ eventRegistrationPoints: preferences.eventRegistrationPoints.toString(), }); } }; return (

Points d'inscription aux événements

Nombre de points attribués lorsqu'un utilisateur s'inscrit à un événement

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

Les utilisateurs gagneront ce nombre de points lors de leur inscription à un événement

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