From 7f6e4e0ec2fee97b2cb97933cffd73b59dd7bea9 Mon Sep 17 00:00:00 2001 From: Eric Gullickson <16152721+ericgullickson@users.noreply.github.com> Date: Fri, 13 Feb 2026 21:43:47 -0600 Subject: [PATCH] fix: skip image preview for PDF receipt uploads (refs #182) URL.createObjectURL on a PDF creates a blob URL that cannot render in an img tag, showing broken image alt text. Skip preview creation for PDF files so the review modal displays without a thumbnail. Co-Authored-By: Claude Opus 4.6 --- .../features/maintenance/hooks/useMaintenanceReceiptOcr.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/features/maintenance/hooks/useMaintenanceReceiptOcr.ts b/frontend/src/features/maintenance/hooks/useMaintenanceReceiptOcr.ts index 725ff1a..03a6a10 100644 --- a/frontend/src/features/maintenance/hooks/useMaintenanceReceiptOcr.ts +++ b/frontend/src/features/maintenance/hooks/useMaintenanceReceiptOcr.ts @@ -235,7 +235,9 @@ export function useMaintenanceReceiptOcr(): UseMaintenanceReceiptOcrReturn { setResult(null); const imageToProcess = croppedFile || file; - const imageUrl = URL.createObjectURL(imageToProcess); + const isPdf = imageToProcess.type === 'application/pdf' || + imageToProcess.name.toLowerCase().endsWith('.pdf'); + const imageUrl = isPdf ? null : URL.createObjectURL(imageToProcess); setReceiptImageUrl(imageUrl); try { @@ -255,7 +257,7 @@ export function useMaintenanceReceiptOcr(): UseMaintenanceReceiptOcrReturn { console.error('Maintenance receipt OCR processing failed:', err); const message = err.response?.data?.message || err.message || 'Failed to process maintenance receipt image'; setError(message); - URL.revokeObjectURL(imageUrl); + if (imageUrl) URL.revokeObjectURL(imageUrl); setReceiptImageUrl(null); } finally { setIsProcessing(false);