import { useState, useEffect } from 'react'; import { supabase } from '@/integrations/supabase/client'; import { SubmissionChangesDisplay } from './SubmissionChangesDisplay'; import { PhotoSubmissionDisplay } from './PhotoSubmissionDisplay'; import { Skeleton } from '@/components/ui/skeleton'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { AlertCircle } from 'lucide-react'; import type { SubmissionItemData } from '@/types/submissions'; interface SubmissionItemsListProps { submissionId: string; view?: 'summary' | 'detailed'; showImages?: boolean; } export function SubmissionItemsList({ submissionId, view = 'summary', showImages = true }: SubmissionItemsListProps) { const [items, setItems] = useState([]); const [hasPhotos, setHasPhotos] = useState(false); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchSubmissionItems(); }, [submissionId]); const fetchSubmissionItems = async () => { try { setLoading(true); setError(null); // Fetch submission items const { data: itemsData, error: itemsError } = await supabase .from('submission_items') .select('*') .eq('submission_id', submissionId) .order('order_index'); if (itemsError) throw itemsError; // Check for photo submissions const { data: photoData, error: photoError } = await supabase .from('photo_submissions') .select('id') .eq('submission_id', submissionId) .single(); if (photoError && photoError.code !== 'PGRST116') { console.warn('Error checking photo submissions:', photoError); } setItems((itemsData || []) as SubmissionItemData[]); setHasPhotos(!!photoData); } catch (err) { console.error('Error fetching submission items:', err); setError('Failed to load submission details'); } finally { setLoading(false); } }; if (loading) { return (
{view === 'detailed' && }
); } if (error) { return ( {error} ); } if (items.length === 0 && !hasPhotos) { return (
No items found for this submission
); } return (
{/* Show regular submission items */} {items.map((item) => (
))} {/* Show photo submission if exists */} {hasPhotos && (
)}
); }