mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-21 11:11:12 -05:00
Fix photo_delete display issues
This commit is contained in:
@@ -97,12 +97,12 @@ async function detectPhotoChanges(submissionId: string): Promise<PhotoChange[]>
|
||||
changes.push({
|
||||
type: 'deleted',
|
||||
photo: {
|
||||
url: itemData.photo_url || itemData.cloudflare_image_url || '',
|
||||
url: itemData.cloudflare_image_url || itemData.photo_url || '',
|
||||
title: itemData.title,
|
||||
caption: itemData.caption,
|
||||
entity_type: itemData.entity_type,
|
||||
entity_name: itemData.entity_name,
|
||||
deletion_reason: itemData.deletion_reason
|
||||
deletion_reason: itemData.deletion_reason || itemData.reason
|
||||
}
|
||||
});
|
||||
} else if (item.item_type === 'photo_edit' && itemData && originalData) {
|
||||
@@ -256,8 +256,39 @@ export async function detectChanges(
|
||||
detectImageChanges(originalData, itemData, imageChanges);
|
||||
}
|
||||
|
||||
// Get entity name
|
||||
const entityName = itemData.name || originalData?.name || 'Unknown';
|
||||
// Get entity name - handle different item types
|
||||
let entityName = 'Unknown';
|
||||
if (item.item_type === 'photo_delete' || item.item_type === 'photo_edit' || item.item_type === 'photo') {
|
||||
// For photo operations, prioritize entity_name from item_data
|
||||
entityName = itemData.entity_name || itemData.caption || itemData.title || 'Photo';
|
||||
|
||||
// If we have entity_type and entity_id but no entity_name, fetch it from DB
|
||||
if (!itemData.entity_name && 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).single();
|
||||
if (data?.name) entityName = `${data.name} (${formatEntityType(entityType)})`;
|
||||
} else if (entityType === 'ride') {
|
||||
const { data } = await supabase.from('rides').select('name').eq('id', entityId).single();
|
||||
if (data?.name) entityName = `${data.name} (${formatEntityType(entityType)})`;
|
||||
} else if (entityType === 'ride_model') {
|
||||
const { data } = await supabase.from('ride_models').select('name').eq('id', entityId).single();
|
||||
if (data?.name) entityName = `${data.name} (${formatEntityType(entityType)})`;
|
||||
} else if (['manufacturer', 'operator', 'designer', 'property_owner'].includes(entityType)) {
|
||||
const { data } = await supabase.from('companies').select('name').eq('id', entityId).single();
|
||||
if (data?.name) entityName = `${data.name} (${formatEntityType(entityType)})`;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error fetching entity name:', err);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// For regular entities, use name field
|
||||
entityName = itemData.name || originalData?.name || 'Unknown';
|
||||
}
|
||||
|
||||
// Detect photo changes if submissionId provided
|
||||
const photoChanges = submissionId ? await detectPhotoChanges(submissionId) : [];
|
||||
@@ -413,6 +444,32 @@ export function formatFieldName(field: string): string {
|
||||
.trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get table name for entity type
|
||||
*/
|
||||
function getTableNameForEntityType(entityType: string): string | null {
|
||||
const mapping: Record<string, string> = {
|
||||
'park': 'parks',
|
||||
'ride': 'rides',
|
||||
'manufacturer': 'companies',
|
||||
'operator': 'companies',
|
||||
'designer': 'companies',
|
||||
'property_owner': 'companies',
|
||||
'ride_model': 'ride_models'
|
||||
};
|
||||
return mapping[entityType] || null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format entity type for display
|
||||
*/
|
||||
function formatEntityType(entityType: string): string {
|
||||
return entityType
|
||||
.split('_')
|
||||
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
||||
.join(' ');
|
||||
}
|
||||
|
||||
/**
|
||||
* Format field value for display
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user