"use client"; import { useState, useTransition } from "react"; import Card from "@/components/ui/Card"; import Button from "@/components/ui/Button"; import { acceptInvitation, rejectInvitation, } from "@/actions/houses/invitations"; import Alert from "@/components/ui/Alert"; interface Invitation { id: string; house: { id: string; name: string; }; inviter: { id: string; username: string; avatar: string | null; }; status: string; createdAt: string; } interface InvitationListProps { invitations: Invitation[]; onUpdate?: () => void; } export default function InvitationList({ invitations, onUpdate, }: InvitationListProps) { const [isPending, startTransition] = useTransition(); const [error, setError] = useState(null); const handleAccept = (invitationId: string) => { setError(null); startTransition(async () => { const result = await acceptInvitation(invitationId); if (result.success) { onUpdate?.(); } else { setError(result.error || "Erreur lors de l'acceptation"); } }); }; const handleReject = (invitationId: string) => { setError(null); startTransition(async () => { const result = await rejectInvitation(invitationId); if (result.success) { onUpdate?.(); } else { setError(result.error || "Erreur lors du refus"); } }); }; if (invitations.length === 0) { return (

Aucune invitation en attente

); } return (
{error && {error}} {invitations.map((invitation) => (

Invitation de {invitation.inviter.username}

Pour rejoindre la maison {invitation.house.name}

{invitation.status === "PENDING" && (
)} {invitation.status === "ACCEPTED" && ( ✓ Acceptée )} {invitation.status === "REJECTED" && ( ✗ Refusée )}
))}
); }