diff --git a/src/lib/submissionChangeDetection.ts b/src/lib/submissionChangeDetection.ts index 0396a1f2..2823c45b 100644 --- a/src/lib/submissionChangeDetection.ts +++ b/src/lib/submissionChangeDetection.ts @@ -369,6 +369,49 @@ export async function detectChanges( has_cloudflare_url: !!itemData.cloudflare_image_url }); } + } else if (item.item_type === 'milestone') { + // Milestone submissions reference entity_id and entity_type + // Need to fetch the entity name from the database + if (itemData.entity_type && itemData.entity_id) { + try { + const entityType = itemData.entity_type; + const entityId = itemData.entity_id; + + if (entityType === 'park') { + const { data } = await supabase.from('parks').select('name').eq('id', entityId).maybeSingle(); + if (data?.name) { + entityName = `${data.name} - ${itemData.title || 'Milestone'}`; + } + } else if (entityType === 'ride') { + const { data: rideData } = await supabase + .from('rides') + .select('name, park:parks(name)') + .eq('id', entityId) + .maybeSingle(); + + if (rideData?.name) { + const parkName = rideData.park?.name; + entityName = parkName + ? `${rideData.name} at ${parkName} - ${itemData.title || 'Milestone'}` + : `${rideData.name} - ${itemData.title || 'Milestone'}`; + } + } + + // If lookup failed, fall back to title with entity type + if (entityName === 'Unknown' && itemData.title) { + entityName = `${formatEntityType(entityType)} - ${itemData.title}`; + } + } catch (err) { + console.error('Error fetching entity name for milestone:', err); + // Fall back to just the title if database lookup fails + if (itemData.title) { + entityName = itemData.title; + } + } + } else if (itemData.title) { + // No entity reference, just use the milestone title + entityName = itemData.title; + } } else { // For regular entities, use name field entityName = itemData.name || originalData?.name || 'Unknown';