Fix error handling

This commit is contained in:
gpt-engineer-app[bot]
2025-11-05 00:54:12 +00:00
parent df9f997c64
commit 5985ee352d
4 changed files with 41 additions and 25 deletions

View File

@@ -4,6 +4,7 @@ import { MFAChallenge } from './MFAChallenge';
import { Shield, AlertCircle, Loader2 } from 'lucide-react';
import { getEnrolledFactors } from '@/lib/authService';
import { useAuth } from '@/hooks/useAuth';
import { handleError } from '@/lib/errorHandler';
interface AutoMFAVerificationModalProps {
open: boolean;
@@ -46,7 +47,10 @@ export function AutoMFAVerificationModal({
}
} catch (err) {
setError('Failed to load MFA settings. Please try again.');
console.error('Failed to fetch MFA factors:', err);
handleError(err, {
action: 'Fetch MFA Factors for Auto-Verification',
metadata: { context: 'AutoMFAVerificationModal' }
});
} finally {
setLoading(false);
}

View File

@@ -1,7 +1,7 @@
import { useState } from "react";
import { supabase } from "@/lib/supabaseClient";
import { useToast } from "@/hooks/use-toast";
import { getErrorMessage } from "@/lib/errorHandler";
import { handleError } from "@/lib/errorHandler";
import { Button } from "@/components/ui/button";
import { Label } from "@/components/ui/label";
import { InputOTP, InputOTPGroup, InputOTPSlot } from "@/components/ui/input-otp";
@@ -45,10 +45,13 @@ export function MFAChallenge({ factorId, onSuccess, onCancel }: MFAChallengeProp
onSuccess();
}
} catch (error: unknown) {
toast({
variant: "destructive",
title: "Verification Failed",
description: getErrorMessage(error) || "Invalid code. Please try again.",
handleError(error, {
action: 'MFA Verification',
metadata: {
factorId,
codeLength: code.length,
context: 'MFAChallenge'
}
});
setCode("");
} finally {

View File

@@ -3,6 +3,7 @@ import { AutoMFAVerificationModal } from './AutoMFAVerificationModal';
import { MFAEnrollmentRequired } from './MFAEnrollmentRequired';
import { useAuth } from '@/hooks/useAuth';
import { useToast } from '@/hooks/use-toast';
import { handleError } from '@/lib/errorHandler';
interface MFAGuardProps {
children: React.ReactNode;
@@ -24,6 +25,7 @@ export function MFAGuard({ children }: MFAGuardProps) {
const { toast } = useToast();
const handleVerificationSuccess = async () => {
try {
// Refresh the session to get updated AAL level
await verifySession();
@@ -31,6 +33,13 @@ export function MFAGuard({ children }: MFAGuardProps) {
title: 'Verification Successful',
description: 'You can now access this area.',
});
} catch (error: unknown) {
handleError(error, {
action: 'MFA Session Verification',
metadata: { context: 'MFAGuard' }
});
// Still attempt to show content - session might be valid despite refresh error
}
};
const handleVerificationCancel = () => {

View File

@@ -2,7 +2,7 @@ import { useState, useEffect, useCallback, useRef } from 'react';
import { supabase } from '@/lib/supabaseClient';
import { useAuth } from './useAuth';
import { useToast } from './use-toast';
import { getErrorMessage, handleNonCriticalError } from '@/lib/errorHandler';
import { getErrorMessage, handleNonCriticalError, handleError } from '@/lib/errorHandler';
import { getSubmissionTypeLabel } from '@/lib/moderation/entities';
import { logger } from '@/lib/logger';
@@ -195,7 +195,7 @@ export const useModerationQueue = (config?: UseModerationQueueConfig) => {
// Start countdown timer for restored lock
startLockTimer(expiresAt);
console.log('Lock state restored from database', {
logger.info('Lock state restored from database', {
submissionId: data.id,
expiresAt: expiresAt.toISOString(),
});
@@ -203,8 +203,8 @@ export const useModerationQueue = (config?: UseModerationQueueConfig) => {
}
} catch (error: unknown) {
// Log but don't show user toast (they haven't taken any action yet)
console.debug('Failed to restore lock state', {
error: error instanceof Error ? error.message : String(error),
logger.debug('Failed to restore lock state', {
error: getErrorMessage(error),
userId: user.id,
});
}
@@ -608,10 +608,10 @@ export const useModerationQueue = (config?: UseModerationQueueConfig) => {
return data;
} catch (error: unknown) {
toast({
title: 'Failed to Release Lock',
description: getErrorMessage(error),
variant: 'destructive',
handleError(error, {
action: 'Superuser Release Lock',
userId: user.id,
metadata: { submissionId }
});
return false;
} finally {
@@ -647,10 +647,10 @@ export const useModerationQueue = (config?: UseModerationQueueConfig) => {
return count;
} catch (error: unknown) {
toast({
title: 'Failed to Clear Locks',
description: getErrorMessage(error),
variant: 'destructive',
handleError(error, {
action: 'Superuser Clear All Locks',
userId: user.id,
metadata: { attemptedAction: 'bulk_release' }
});
return 0;
} finally {