diff --git a/app/ui/invitations/board.tsx b/app/ui/invitations/board.tsx index d900041..b1517b3 100644 --- a/app/ui/invitations/board.tsx +++ b/app/ui/invitations/board.tsx @@ -4,11 +4,17 @@ import { AbstractApi } from "@/app/api/abstract-api"; import { Guest } from "@/app/lib/guest"; import { Invitation, InvitationSerializer } from "@/app/lib/invitation"; import { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter'; +import { TrashIcon } from "@heroicons/react/24/outline"; import { useEffect, useRef } from "react"; import { useState } from "react"; -function InvitationCard({ invitation, allGuests, onGuestAdded }: { invitation: Invitation, allGuests: Guest[], onGuestAdded: (guest: Guest) => void }) { - +function InvitationCard({ invitation, allGuests, onGuestAdded, onDestroy }: { + invitation: Invitation, + allGuests: Guest[], + onGuestAdded: (guest: Guest) => void, + onDestroy: (invitation: Invitation) => void +} +) { const [guests, setGuests] = useState(invitation.guests); const ref = useRef(null); @@ -42,9 +48,18 @@ function InvitationCard({ invitation, allGuests, onGuestAdded }: { invitation: I
+ { + api.destroy(serializer, invitation, () => { + onDestroy(invitation); + }); + }} + /> + {guests.length === 0 ? (

(empty invitation) @@ -149,6 +164,13 @@ export default function InvitationsBoard({ guests, invitations: originalInvitati onGuestAdded={(guestAdded: Guest) => { setUnassignedGuests((prevUnassignedGuests) => prevUnassignedGuests.filter(g => g.id !== guestAdded.id)); }} + onDestroy={(invitationToDestroy: Invitation) => { + setInvitations((prevInvitations) => prevInvitations.filter(i => i.id !== invitationToDestroy.id)); + setUnassignedGuests((prevUnassignedGuests) => [ + ...prevUnassignedGuests, + ...invitationToDestroy.guests + ]); + }} /> ))}