Refactor: Implement full error logging

This commit is contained in:
gpt-engineer-app[bot]
2025-11-04 19:23:28 +00:00
parent 3d646ec6f7
commit 9bf5ea322e
20 changed files with 75 additions and 122 deletions

View File

@@ -96,7 +96,11 @@ export function ItemEditDialog({ item, items, open, onOpenChange, onComplete }:
const handlePhotoSubmit = async (caption: string, credit: string) => {
if (!item?.item_data) {
logger.error('No item data available for photo submission');
toast({
title: 'Error',
description: 'No photo data available',
variant: 'destructive',
});
return;
}

View File

@@ -13,8 +13,7 @@ import { AlertCircle, Loader2 } from 'lucide-react';
import { format } from 'date-fns';
import type { SubmissionItemData } from '@/types/submissions';
import type { ParkSubmissionData, RideSubmissionData, CompanySubmissionData, RideModelSubmissionData } from '@/types/submission-data';
import { logger } from '@/lib/logger';
import { getErrorMessage } from '@/lib/errorHandler';
import { getErrorMessage, handleNonCriticalError } from '@/lib/errorHandler';
import { ModerationErrorBoundary } from '@/components/error/ModerationErrorBoundary';
interface SubmissionItemsListProps {
@@ -71,13 +70,19 @@ export const SubmissionItemsList = memo(function SubmissionItemsList({
.eq('submission_id', submissionId);
if (photoError) {
logger.warn('Error checking photo submissions:', photoError);
handleNonCriticalError(photoError, {
action: 'Check photo submissions',
metadata: { submissionId }
});
}
setItems(transformedItems as SubmissionItemData[]);
setHasPhotos(!!(photoData && photoData.length > 0));
} catch (err) {
logger.error('Failed to fetch submission items', { error: getErrorMessage(err) });
handleNonCriticalError(err, {
action: 'Fetch submission items',
metadata: { submissionId }
});
setError('Failed to load submission details');
} finally {
setLoading(false);

View File

@@ -439,7 +439,11 @@ export function SubmissionReviewManager({
);
if (error) {
logger.error('Edge function failed', { error: getErrorMessage(error) });
handleError(error, {
action: 'Send escalation notification',
userId: user.id,
metadata: { submissionId }
});
// Fallback to direct database update if email fails
await escalateSubmission(submissionId, reason, user.id);
toast({

View File

@@ -5,7 +5,7 @@ import { RefreshButton } from '@/components/ui/refresh-button';
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';
import { validateEntityData, ValidationResult } from '@/lib/entityValidationSchemas';
import { logger } from '@/lib/logger';
import { handleNonCriticalError } from '@/lib/errorHandler';
import type { SubmissionItemData } from '@/types/moderation';
@@ -92,10 +92,9 @@ export function ValidationSummary({ item, onValidationChange, compact = false, v
setValidationResult(result);
onValidationChange?.(result);
} catch (error: unknown) {
logger.error('Entity validation failed', {
action: 'validate_entity',
entityType: item.item_type,
error: error instanceof Error ? error.message : String(error)
handleNonCriticalError(error, {
action: 'Validate entity',
metadata: { entityType: item.item_type }
});
setValidationResult({
isValid: false,