From d2e27c43904533211c6470f25a597efcfc0e3439 Mon Sep 17 00:00:00 2001 From: Starstrike Date: Thu, 1 May 2025 09:15:23 -0400 Subject: [PATCH] Fix RSVP items handling and response format --- backend/src/index.ts | 19 ++++++++++++++++--- frontend/src/components/RSVPForm.tsx | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 197827e..f5d6bc6 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -209,21 +209,34 @@ app.post('/api/events/:slug/rsvp', async (req: Request, res: Response) => { } const eventId = eventRows[0].id; + + // Ensure items_bringing is properly formatted + let parsedItemsBringing: string[] = []; + try { + if (typeof items_bringing === 'string') { + parsedItemsBringing = JSON.parse(items_bringing); + } else if (Array.isArray(items_bringing)) { + parsedItemsBringing = items_bringing; + } + } catch (e) { + console.error('Error parsing items_bringing:', e); + } + const result = await db.run( 'INSERT INTO rsvps (event_id, name, attending, bringing_guests, guest_count, guest_names, items_bringing) VALUES (?, ?, ?, ?, ?, ?, ?)', - [eventId, name, attending, bringing_guests, guest_count, guest_names, JSON.stringify(items_bringing || [])] + [eventId, name, attending, bringing_guests, guest_count, guest_names, JSON.stringify(parsedItemsBringing)] ); // Return the complete RSVP data including the parsed items_bringing res.status(201).json({ - ...result, id: result.lastID, + event_id: eventId, name, attending, bringing_guests, guest_count, guest_names, - items_bringing: items_bringing || [] + items_bringing: parsedItemsBringing }); } catch (error) { console.error('Error creating RSVP:', error); diff --git a/frontend/src/components/RSVPForm.tsx b/frontend/src/components/RSVPForm.tsx index bc8b891..3bb1ef8 100644 --- a/frontend/src/components/RSVPForm.tsx +++ b/frontend/src/components/RSVPForm.tsx @@ -163,7 +163,7 @@ const RSVPForm: React.FC = () => { const claimed = new Set(); // First add items from the new submission - const newRsvpItems = response.data.items_bringing || []; + const newRsvpItems = response.data.items_bringing; if (Array.isArray(newRsvpItems)) { newRsvpItems.forEach((item: string) => claimed.add(item)); }