import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Badge } from '@/components/ui/badge'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Card, CardContent } from '@/components/ui/card'; import { format } from 'date-fns'; import { XCircle, Clock, User, FileText, AlertTriangle } from 'lucide-react'; import { Link } from 'react-router-dom'; interface ApprovalFailure { id: string; submission_id: string; moderator_id: string; submitter_id: string; items_count: number; duration_ms: number | null; error_message: string | null; request_id: string | null; rollback_triggered: boolean | null; created_at: string; success: boolean; moderator?: { username: string; avatar_url: string | null; }; submission?: { submission_type: string; user_id: string; }; } interface ApprovalFailureModalProps { failure: ApprovalFailure | null; onClose: () => void; } export function ApprovalFailureModal({ failure, onClose }: ApprovalFailureModalProps) { if (!failure) return null; return ( Approval Failure Details Overview Error Details Metadata
Timestamp
{format(new Date(failure.created_at), 'PPpp')}
Duration
{failure.duration_ms != null ? `${failure.duration_ms}ms` : 'N/A'}
Submission Type
{failure.submission?.submission_type || 'Unknown'}
Items Count
{failure.items_count}
Moderator
{failure.moderator?.username || 'Unknown'}
Submission ID
{failure.submission_id}
{failure.rollback_triggered && (
Rollback was triggered for this approval
)}
Error Message
{failure.error_message || 'No error message available'}
{failure.request_id && (
Request ID
{failure.request_id}
)}
Troubleshooting Tips
  • Check if the submission still exists in the database
  • Verify that all foreign key references are valid
  • Review the edge function logs for detailed stack traces
  • Check for concurrent modification conflicts
  • Verify network connectivity and database availability
Failure ID
{failure.id}
Success Status
{failure.success ? 'Success' : 'Failed'}
Moderator ID
{failure.moderator_id}
Submitter ID
{failure.submitter_id}
{failure.request_id && (
Request ID
{failure.request_id}
)}
Rollback Triggered
{failure.rollback_triggered ? 'Yes' : 'No'}
); }