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

Points des Maisons

Nombre de points attribués ou retirés pour les actions liées aux maisons

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

Les utilisateurs gagneront ce nombre de points lorsqu'ils rejoignent une maison

setFormData({ ...formData, houseLeavePoints: e.target.value, }) } placeholder="100" className="w-full" />

Les utilisateurs perdront ce nombre de points lorsqu'ils quittent une maison

setFormData({ ...formData, houseCreatePoints: e.target.value, }) } placeholder="100" className="w-full" />

Les utilisateurs gagneront ce nombre de points lorsqu'ils créent une maison

) : (
Points pour rejoindre:
{preferences?.houseJoinPoints ?? 100} points
Points retirés en quittant:
{preferences?.houseLeavePoints ?? 100} points
Points pour créer:
{preferences?.houseCreatePoints ?? 100} points
)}
); }