From 4beddaf25d5decff58674341e99b720bb693f9fc Mon Sep 17 00:00:00 2001 From: Desktop Date: Tue, 11 Nov 2025 00:43:39 +0500 Subject: [PATCH] Update ProgressModal.tsx --- .../src/components/common/ProgressModal.tsx | 95 +++++++++---------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/frontend/src/components/common/ProgressModal.tsx b/frontend/src/components/common/ProgressModal.tsx index 6eda9fbd..ffde5bb7 100644 --- a/frontend/src/components/common/ProgressModal.tsx +++ b/frontend/src/components/common/ProgressModal.tsx @@ -283,7 +283,8 @@ export default function ProgressModal({ const checklistItems = steps.map((step) => { const actuallyCompleted = isStepCompleted(step.phase, currentPhase, stepLogs); const visuallyCompleted = visuallyCompletedSteps.has(step.phase); - const inProgress = isStepInProgress(step.phase, currentPhase) && !visuallyCompleted; + // Only show as in progress if it's the current phase AND not visually completed yet + const inProgress = step.phase === currentPhase && !visuallyCompleted && !actuallyCompleted; // Get step log and format message const stepLog = stepLogs.find(log => log.stepName === step.phase); @@ -358,20 +359,7 @@ export default function ProgressModal({ }; }, [isOpen, currentPhase, stepLogs, steps, visuallyCompletedSteps]); - // Auto-close on completion after all steps are visually completed + 3 seconds - useEffect(() => { - if (status === 'completed' && allStepsVisuallyCompleted && onClose && !hasAutoClosedRef.current) { - hasAutoClosedRef.current = true; - // Wait 3 seconds after success alert appears - const timer = setTimeout(() => { - onClose(); - }, 3000); - return () => clearTimeout(timer); - } - if (status !== 'completed' || !allStepsVisuallyCompleted) { - hasAutoClosedRef.current = false; - } - }, [status, allStepsVisuallyCompleted, onClose]); + // Don't auto-close - user must click close button // Show success alert only when all steps are visually completed AND status is completed const showSuccess = status === 'completed' && allStepsVisuallyCompleted; @@ -386,34 +374,26 @@ export default function ProgressModal({ >
{/* Header */} -
-
- {status === 'error' ? ( - - - - ) : showSuccess ? ( - - - - ) : ( - +
+

+ {title} +

+ {!showSuccess && status !== 'completed' && ( +

{message}

+ )} + {status === 'completed' && !allStepsVisuallyCompleted && ( +

Processing...

+ )} + + {/* Spinner below heading - only show when processing and not completed */} + {!showSuccess && status !== 'completed' && status !== 'error' && ( +
+ - )} -
-
-

- {title} -

- {!showSuccess && status !== 'completed' && ( -

{message}

- )} - {status === 'completed' && !allStepsVisuallyCompleted && ( -

Processing...

- )} -
+
+ )}
{/* Success Alert (shown when all steps are visually completed) */} @@ -450,17 +430,14 @@ export default function ProgressModal({ : 'bg-gray-50 dark:bg-gray-800 border-gray-200 dark:border-gray-700 opacity-60' }`} > - {/* Icon */} + {/* Icon - no spinner in steps, only checkmark or circle */}
{item.completed ? ( ) : item.inProgress ? ( - - - - +
) : (
)} @@ -483,8 +460,20 @@ export default function ProgressModal({
{/* Footer */} -
- {onCancel && status !== 'completed' && status !== 'error' && ( + {showSuccess && onClose && ( +
+ +
+ )} + {onCancel && !showSuccess && status !== 'error' && ( +
- )} - {(status === 'completed' || status === 'error') && onClose && ( +
+ )} + {status === 'error' && onClose && ( +
- )} -
+
+ )}
);