diff --git a/frontend/src/components/EventAdmin.tsx b/frontend/src/components/EventAdmin.tsx index 5a49b58..9525e5a 100644 --- a/frontend/src/components/EventAdmin.tsx +++ b/frontend/src/components/EventAdmin.tsx @@ -85,17 +85,42 @@ const EventAdmin: React.FC = () => { axios.get(`/api/events/${slug}/rsvps`) ]); setEvent(eventResponse.data); - setNeededItems(eventResponse.data.needed_items || []); + + // Parse needed_items + let items: string[] = []; + if (eventResponse.data.needed_items) { + try { + items = typeof eventResponse.data.needed_items === 'string' + ? JSON.parse(eventResponse.data.needed_items) + : Array.isArray(eventResponse.data.needed_items) + ? eventResponse.data.needed_items + : []; + } catch (e) { + console.error('Error parsing needed_items:', e); + items = []; + } + } + setNeededItems(items); // Parse items_bringing for each RSVP - const processedRsvps = rsvpsResponse.data.map((rsvp: RSVP) => ({ - ...rsvp, - items_bringing: typeof rsvp.items_bringing === 'string' - ? JSON.parse(rsvp.items_bringing) - : Array.isArray(rsvp.items_bringing) - ? rsvp.items_bringing - : [] - })); + const processedRsvps = rsvpsResponse.data.map((rsvp: RSVP) => { + let itemsBringing: string[] = []; + try { + itemsBringing = typeof rsvp.items_bringing === 'string' + ? JSON.parse(rsvp.items_bringing) + : Array.isArray(rsvp.items_bringing) + ? rsvp.items_bringing + : []; + } catch (e) { + console.error('Error parsing items_bringing:', e); + itemsBringing = []; + } + + return { + ...rsvp, + items_bringing: itemsBringing + }; + }); setRsvps(processedRsvps); setLoading(false); diff --git a/frontend/src/components/RSVPForm.tsx b/frontend/src/components/RSVPForm.tsx index c1d3ade..187af7b 100644 --- a/frontend/src/components/RSVPForm.tsx +++ b/frontend/src/components/RSVPForm.tsx @@ -52,11 +52,16 @@ const RSVPForm: React.FC = () => { // Ensure needed_items is an array let items: string[] = []; if (response.data.needed_items) { - items = Array.isArray(response.data.needed_items) - ? response.data.needed_items - : typeof response.data.needed_items === 'string' - ? response.data.needed_items.split(',').map((item: string): string => item.trim()) - : []; + try { + items = typeof response.data.needed_items === 'string' + ? JSON.parse(response.data.needed_items) + : Array.isArray(response.data.needed_items) + ? response.data.needed_items + : []; + } catch (e) { + console.error('Error parsing needed_items:', e); + items = []; + } } console.log('Processed needed items:', items);