Fix RSVP items handling and response format
This commit is contained in:
@@ -213,7 +213,18 @@ app.post('/api/events/:slug/rsvp', async (req: Request, res: Response) => {
|
|||||||
'INSERT INTO rsvps (event_id, name, attending, bringing_guests, guest_count, guest_names, items_bringing) VALUES (?, ?, ?, ?, ?, ?, ?)',
|
'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(items_bringing || [])]
|
||||||
);
|
);
|
||||||
res.status(201).json(result);
|
|
||||||
|
// Return the complete RSVP data including the parsed items_bringing
|
||||||
|
res.status(201).json({
|
||||||
|
...result,
|
||||||
|
id: result.lastID,
|
||||||
|
name,
|
||||||
|
attending,
|
||||||
|
bringing_guests,
|
||||||
|
guest_count,
|
||||||
|
guest_names,
|
||||||
|
items_bringing: items_bringing || []
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error creating RSVP:', error);
|
console.error('Error creating RSVP:', error);
|
||||||
res.status(500).json({ error: 'Internal server error' });
|
res.status(500).json({ error: 'Internal server error' });
|
||||||
|
|||||||
@@ -154,8 +154,9 @@ const RSVPForm: React.FC = () => {
|
|||||||
const claimed = new Set<string>();
|
const claimed = new Set<string>();
|
||||||
|
|
||||||
// First add items from the new submission
|
// First add items from the new submission
|
||||||
if (Array.isArray(response.data.items_bringing)) {
|
const newRsvpItems = response.data.items_bringing || [];
|
||||||
response.data.items_bringing.forEach((item: string) => claimed.add(item));
|
if (Array.isArray(newRsvpItems)) {
|
||||||
|
newRsvpItems.forEach((item: string) => claimed.add(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Then add items from existing RSVPs
|
// Then add items from existing RSVPs
|
||||||
@@ -163,14 +164,17 @@ const RSVPForm: React.FC = () => {
|
|||||||
try {
|
try {
|
||||||
let rsvpItems: string[] = [];
|
let rsvpItems: string[] = [];
|
||||||
if (typeof rsvp.items_bringing === 'string') {
|
if (typeof rsvp.items_bringing === 'string') {
|
||||||
rsvpItems = JSON.parse(rsvp.items_bringing);
|
try {
|
||||||
|
rsvpItems = JSON.parse(rsvp.items_bringing);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error parsing items_bringing JSON:', e);
|
||||||
|
rsvpItems = [];
|
||||||
|
}
|
||||||
} else if (Array.isArray(rsvp.items_bringing)) {
|
} else if (Array.isArray(rsvp.items_bringing)) {
|
||||||
rsvpItems = rsvp.items_bringing;
|
rsvpItems = rsvp.items_bringing;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rsvpItems.length > 0) {
|
rsvpItems.forEach((item: string) => claimed.add(item));
|
||||||
rsvpItems.forEach((item: string) => claimed.add(item));
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Error processing RSVP items:', e);
|
console.error('Error processing RSVP items:', e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user