feat: Complete error logging coverage

This commit is contained in:
gpt-engineer-app[bot]
2025-11-04 19:30:56 +00:00
parent 9bf5ea322e
commit 162d288cb0
13 changed files with 50 additions and 53 deletions

View File

@@ -74,7 +74,7 @@ export function ReassignDialog({
.rpc('get_users_with_emails');
if (rpcError) {
logger.warn('Failed to fetch users with emails, using basic profiles', { error: getErrorMessage(rpcError) });
// Fall back to basic profiles
const { data: basicProfiles } = await supabase
.from('profiles')
.select('user_id, username, display_name')

View File

@@ -9,8 +9,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
import { supabase } from '@/lib/supabaseClient';
import { useAuth } from '@/hooks/useAuth';
import { useUserRole } from '@/hooks/useUserRole';
import { handleError, handleSuccess, getErrorMessage } from '@/lib/errorHandler';
import { logger } from '@/lib/logger';
import { handleError, handleNonCriticalError, handleSuccess, getErrorMessage } from '@/lib/errorHandler';
// Type-safe role definitions
const VALID_ROLES = ['admin', 'moderator', 'user'] as const;
@@ -91,7 +90,7 @@ export function UserRoleManager() {
.rpc('get_users_with_emails');
if (rpcError) {
logger.warn('Failed to fetch users with emails, using basic profiles', { error: getErrorMessage(rpcError) });
// Fall back to basic profiles
const { data: basicProfiles } = await supabase
.from('profiles')
.select('user_id, username, display_name')
@@ -128,7 +127,7 @@ export function UserRoleManager() {
.rpc('get_users_with_emails');
if (rpcError) {
logger.warn('Failed to fetch users with emails, using basic profiles', { error: getErrorMessage(rpcError) });
// Fall back to basic profiles
const { data: basicProfiles, error: profilesError } = await supabase
.from('profiles')
.select('user_id, username, display_name')
@@ -149,7 +148,11 @@ export function UserRoleManager() {
const filteredResults = (data || []).filter(profile => !existingUserIds.includes(profile.user_id));
setSearchResults(filteredResults);
} catch (error: unknown) {
logger.error('User search failed', { error: getErrorMessage(error) });
handleNonCriticalError(error, {
action: 'Search Users',
userId: user?.id,
metadata: { search }
});
}
};
useEffect(() => {

View File

@@ -1,7 +1,6 @@
import React, { useState } from "react";
import { invokeWithTracking } from "@/lib/edgeFunctionTracking";
import { logger } from "@/lib/logger";
import { getErrorMessage } from "@/lib/errorHandler";
import { handleError, getErrorMessage } from "@/lib/errorHandler";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
@@ -171,11 +170,10 @@ export function UppyPhotoSubmissionUpload({
);
} catch (error: unknown) {
const errorMsg = getErrorMessage(error);
logger.error("Photo submission upload failed", {
photoTitle: photo.title,
photoOrder: photo.order,
fileName: photo.file?.name,
error: errorMsg,
handleError(error, {
action: 'Upload Photo Submission',
userId: user.id,
metadata: { photoTitle: photo.title, photoOrder: photo.order, fileName: photo.file?.name }
});
setPhotos((prev) => prev.map((p) => (p === photo ? { ...p, uploadStatus: "failed" as const } : p)));
@@ -258,12 +256,10 @@ export function UppyPhotoSubmissionUpload({
onSubmissionComplete?.();
} catch (error: unknown) {
const errorMsg = getErrorMessage(error);
logger.error("Photo submission failed", {
entityType,
entityId,
photoCount: photos.length,
handleError(error, {
action: 'Submit Photo Submission',
userId: user?.id,
error: errorMsg,
metadata: { entityType, entityId, photoCount: photos.length }
});
toast({

View File

@@ -1,9 +1,9 @@
import React, { useRef, useState } from 'react';
import { supabase } from '@/lib/supabaseClient';
import { useToast } from '@/hooks/use-toast';
import { useAuth } from '@/hooks/useAuth';
import { invokeWithTracking } from '@/lib/edgeFunctionTracking';
import { logger } from '@/lib/logger';
import { getErrorMessage } from '@/lib/errorHandler';
import { handleError, getErrorMessage } from '@/lib/errorHandler';
import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import { Upload, X, Eye, Loader2, CheckCircle } from 'lucide-react';
@@ -204,11 +204,9 @@ export function UppyPhotoUpload({
setUploadProgress(Math.round(((i + 1) / totalFiles) * 100));
} catch (error: unknown) {
const errorMsg = getErrorMessage(error);
logger.error('File upload failed', {
fileName: file.name,
fileSize: file.size,
fileType: file.type,
error: errorMsg
handleError(error, {
action: 'Upload Photo File',
metadata: { fileName: file.name, fileSize: file.size, fileType: file.type }
});
toast({