From 5e789c7b4bb47ff89fd18bb9503d7e2d2e9a2532 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 21 Oct 2025 15:32:01 +0000 Subject: [PATCH] Fix critical path catch blocks --- src/components/moderation/ModerationQueue.tsx | 2 +- .../moderation/PhotoSubmissionDisplay.tsx | 2 +- src/components/moderation/ReportButton.tsx | 2 +- src/components/moderation/UserRoleManager.tsx | 2 +- src/components/settings/AccountProfileTab.tsx | 4 +-- .../settings/DeletionStatusBanner.tsx | 2 +- src/components/settings/SimplePhotoUpload.tsx | 2 +- .../upload/EntityMultiImageUploader.tsx | 4 +-- src/components/upload/EntityPhotoGallery.tsx | 2 +- .../upload/PhotoManagementDialog.tsx | 6 ++-- src/components/upload/PhotoUpload.tsx | 30 +++++++++---------- .../upload/UppyPhotoSubmissionUpload.tsx | 4 +-- src/components/upload/UppyPhotoUpload.tsx | 2 +- src/hooks/useAvatarUpload.ts | 2 +- 14 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/components/moderation/ModerationQueue.tsx b/src/components/moderation/ModerationQueue.tsx index 1bde5d7b..ea853b03 100644 --- a/src/components/moderation/ModerationQueue.tsx +++ b/src/components/moderation/ModerationQueue.tsx @@ -109,7 +109,7 @@ export const ModerationQueue = forwardRef ur.user_id); const filteredResults = (data || []).filter(profile => !existingUserIds.includes(profile.user_id)); setSearchResults(filteredResults); - } catch (error) { + } catch (error: unknown) { console.error('Error searching users:', error); } }; diff --git a/src/components/settings/AccountProfileTab.tsx b/src/components/settings/AccountProfileTab.tsx index a12fee0e..0473bdf5 100644 --- a/src/components/settings/AccountProfileTab.tsx +++ b/src/components/settings/AccountProfileTab.tsx @@ -143,7 +143,7 @@ export function AccountProfileTab() { await refreshProfile(); handleSuccess('Profile updated', 'Your profile has been successfully updated.'); - } catch (error) { + } catch (error: unknown) { handleError(error, { action: 'Update profile', userId: user.id }); } finally { setLoading(false); @@ -204,7 +204,7 @@ export function AccountProfileTab() { setShowCancelEmailDialog(false); await refreshProfile(); - } catch (error) { + } catch (error: unknown) { handleError(error, { action: 'Cancel email change' }); } finally { setCancellingEmail(false); diff --git a/src/components/settings/DeletionStatusBanner.tsx b/src/components/settings/DeletionStatusBanner.tsx index adaf71b3..ecc9db5b 100644 --- a/src/components/settings/DeletionStatusBanner.tsx +++ b/src/components/settings/DeletionStatusBanner.tsx @@ -41,7 +41,7 @@ export function DeletionStatusBanner({ scheduledDate, onCancelled }: DeletionSta }); onCancelled(); - } catch (error) { + } catch (error: unknown) { const errorMsg = getErrorMessage(error); toast({ variant: 'destructive', diff --git a/src/components/settings/SimplePhotoUpload.tsx b/src/components/settings/SimplePhotoUpload.tsx index 09146dea..7eed8a8a 100644 --- a/src/components/settings/SimplePhotoUpload.tsx +++ b/src/components/settings/SimplePhotoUpload.tsx @@ -49,7 +49,7 @@ export function SimplePhotoUpload({ onUpload, disabled, children }: SimplePhotoU title: 'Image uploaded', description: 'Your image has been uploaded successfully' }); - } catch (error) { + } catch (error: unknown) { toast({ title: 'Upload failed', description: getErrorMessage(error), diff --git a/src/components/upload/EntityMultiImageUploader.tsx b/src/components/upload/EntityMultiImageUploader.tsx index f71c98a3..2d761009 100644 --- a/src/components/upload/EntityMultiImageUploader.tsx +++ b/src/components/upload/EntityMultiImageUploader.tsx @@ -67,7 +67,7 @@ export function EntityMultiImageUploader({ if (image.isLocal && image.url.startsWith('blob:')) { try { URL.revokeObjectURL(image.url); - } catch (error) { + } catch (error: unknown) { console.error('Error revoking object URL:', error); } } @@ -105,7 +105,7 @@ export function EntityMultiImageUploader({ banner_assignment: bannerIndex >= 0 ? bannerIndex : null, card_assignment: cardIndex >= 0 ? cardIndex : null, }); - } catch (error) { + } catch (error: unknown) { console.error('Failed to load entity photos:', error); toast({ title: 'Error', diff --git a/src/components/upload/EntityPhotoGallery.tsx b/src/components/upload/EntityPhotoGallery.tsx index 6939738e..6fff34a6 100644 --- a/src/components/upload/EntityPhotoGallery.tsx +++ b/src/components/upload/EntityPhotoGallery.tsx @@ -76,7 +76,7 @@ export function EntityPhotoGallery({ console.log('📷 [FETCH PHOTOS] Mapped photos:', mappedPhotos); setPhotos(mappedPhotos); - } catch (error) { + } catch (error: unknown) { console.error('📷 [FETCH PHOTOS] Error:', error); } finally { setLoading(false); diff --git a/src/components/upload/PhotoManagementDialog.tsx b/src/components/upload/PhotoManagementDialog.tsx index 31572797..13eab5cd 100644 --- a/src/components/upload/PhotoManagementDialog.tsx +++ b/src/components/upload/PhotoManagementDialog.tsx @@ -77,7 +77,7 @@ export function PhotoManagementDialog({ if (error) throw error; setPhotos(data || []); - } catch (error) { + } catch (error: unknown) { console.error('Error fetching photos:', error); toast({ title: 'Error', @@ -172,7 +172,7 @@ export function PhotoManagementDialog({ setPhotoToDelete(null); setDeleteReason(''); onOpenChange(false); - } catch (error) { + } catch (error: unknown) { console.error('Error requesting photo deletion:', error); toast({ title: 'Error', @@ -237,7 +237,7 @@ export function PhotoManagementDialog({ description: 'Your photo edit has been submitted for moderation', }); onOpenChange(false); - } catch (error) { + } catch (error: unknown) { console.error('Error requesting photo edit:', error); toast({ title: 'Error', diff --git a/src/components/upload/PhotoUpload.tsx b/src/components/upload/PhotoUpload.tsx index 027fcc98..654aaaa0 100644 --- a/src/components/upload/PhotoUpload.tsx +++ b/src/components/upload/PhotoUpload.tsx @@ -66,17 +66,17 @@ export function PhotoUpload({ const canUploadMore = totalImages < actualMaxFiles; useEffect(() => { - return () => { - objectUrlsRef.current.forEach(url => { - try { - URL.revokeObjectURL(url); - } catch (error) { - console.error('Error revoking object URL:', error); - } - }); - objectUrlsRef.current.clear(); - }; - }, []); + return () => { + objectUrlsRef.current.forEach(url => { + try { + URL.revokeObjectURL(url); + } catch (error: unknown) { + console.error('Error revoking object URL:', error); + } + }); + objectUrlsRef.current.clear(); + }; + }, []); const createObjectUrl = (file: File): string => { const url = URL.createObjectURL(file); @@ -89,7 +89,7 @@ export function PhotoUpload({ try { URL.revokeObjectURL(url); objectUrlsRef.current.delete(url); - } catch (error) { + } catch (error: unknown) { console.error('Error revoking object URL:', error); } } @@ -194,7 +194,7 @@ export function PhotoUpload({ }; } } - } catch (error) { + } catch (error: unknown) { console.error('Status poll error:', error); } @@ -204,7 +204,7 @@ export function PhotoUpload({ revokeObjectUrl(previewUrl); throw new Error('Upload timeout - image processing took too long'); - } catch (error) { + } catch (error: unknown) { revokeObjectUrl(previewUrl); throw error; } @@ -273,7 +273,7 @@ export function PhotoUpload({ } setUploadProgress(100); - } catch (error) { + } catch (error: unknown) { previewUrls.forEach(url => revokeObjectUrl(url)); const errorMsg = getErrorMessage(error); setError(errorMsg); diff --git a/src/components/upload/UppyPhotoSubmissionUpload.tsx b/src/components/upload/UppyPhotoSubmissionUpload.tsx index dac1f625..2918f332 100644 --- a/src/components/upload/UppyPhotoSubmissionUpload.tsx +++ b/src/components/upload/UppyPhotoSubmissionUpload.tsx @@ -167,7 +167,7 @@ export function UppyPhotoSubmissionUpload({ p === photo ? { ...p, url: cloudflareUrl, uploadStatus: 'uploaded' as const } : p )); - } catch (error) { + } catch (error: unknown) { console.error('Upload error:', error); setPhotos(prev => prev.map(p => p === photo ? { ...p, uploadStatus: 'failed' as const } : p @@ -255,7 +255,7 @@ export function UppyPhotoSubmissionUpload({ setTitle(''); setPhotos([]); onSubmissionComplete?.(); - } catch (error) { + } catch (error: unknown) { console.error('Submission error:', error); toast({ variant: 'destructive', diff --git a/src/components/upload/UppyPhotoUpload.tsx b/src/components/upload/UppyPhotoUpload.tsx index 70d2ad7a..d5475c38 100644 --- a/src/components/upload/UppyPhotoUpload.tsx +++ b/src/components/upload/UppyPhotoUpload.tsx @@ -200,7 +200,7 @@ export function UppyPhotoUpload({ const url = await uploadSingleFile(file); newUrls.push(url); setUploadProgress(Math.round(((i + 1) / totalFiles) * 100)); - } catch (error) { + } catch (error: unknown) { console.error(`Upload failed for ${file.name}:`, error); toast({ variant: 'destructive', diff --git a/src/hooks/useAvatarUpload.ts b/src/hooks/useAvatarUpload.ts index 189fd771..b6467065 100644 --- a/src/hooks/useAvatarUpload.ts +++ b/src/hooks/useAvatarUpload.ts @@ -49,7 +49,7 @@ export const useAvatarUpload = ( handleSuccess('Avatar updated', 'Your avatar has been successfully updated.'); return { success: true }; - } catch (error) { + } catch (error: unknown) { // Rollback on error setState({ url: initialUrl,