Fix: Properly parse JSON strings for needed_items and items_bringing

This commit is contained in:
2025-04-30 10:30:24 -04:00
parent 134bfbdb7e
commit 4c2a1f747d
2 changed files with 44 additions and 14 deletions

View File

@@ -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);

View File

@@ -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);