diff --git a/src/components/personal/TaskWorkspace.tsx b/src/components/personal/TaskWorkspace.tsx index 89d3cb2..d046ed3 100644 --- a/src/components/personal/TaskWorkspace.tsx +++ b/src/components/personal/TaskWorkspace.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react' +import React, { useEffect, useState } from 'react' import { Box, Button, @@ -26,15 +26,30 @@ export const TaskWorkspace = ({ task, onTaskComplete }: TaskWorkspaceProps) => { taskId: task.id, }) + // Сохраняем последний результат, чтобы блок не исчезал + const [lastResult, setLastResult] = useState(null) + const isChecking = !!queueStatus || isSubmitting const isAccepted = finalSubmission?.status === 'accepted' const needsRevision = finalSubmission?.status === 'needs_revision' + + // Обновляем сохраненный результат только когда получаем новый + useEffect(() => { + if (finalSubmission) { + setLastResult(finalSubmission) + } + }, [finalSubmission]) useEffect(() => { if (finalSubmission) { refreshStats() } }, [finalSubmission, refreshStats]) + + // Используем либо текущий результат, либо последний сохраненный + const displayedSubmission = finalSubmission || lastResult + const showAccepted = displayedSubmission?.status === 'accepted' + const showNeedsRevision = displayedSubmission?.status === 'needs_revision' return ( @@ -212,66 +227,62 @@ export const TaskWorkspace = ({ task, onTaskComplete }: TaskWorkspaceProps) => { - {/* Статус проверки */} - {queueStatus && !finalSubmission && ( - - - - - {queueStatus.status === 'waiting' ? 'Ожидание в очереди...' : 'Проверяем решение...'} - {typeof queueStatus.position === 'number' && queueStatus.position > 0 && ` (позиция: ${queueStatus.position})`} - - - - )} - - {/* Результат проверки - успех */} - {isAccepted && ( - - - - - - - Задание принято! - - {finalSubmission?.feedback && ( + {/* Статус проверки и результат - фиксированное место */} + + {queueStatus && !finalSubmission ? ( + + + + + {queueStatus.status === 'waiting' ? 'Ожидание в очереди...' : 'Проверяем решение...'} + {typeof queueStatus.position === 'number' && queueStatus.position > 0 && ` (позиция: ${queueStatus.position})`} + + + + ) : showAccepted ? ( + + + + + + + Задание принято! + + {displayedSubmission?.feedback && ( + + {displayedSubmission.feedback} + + )} + + + + + + ) : showNeedsRevision ? ( + + + ⚠️ + + + + Задание требует доработки + + + (попытка №{displayedSubmission?.attemptNumber}) + + + {displayedSubmission?.feedback && ( - {finalSubmission.feedback} + {displayedSubmission.feedback} )} - - - - )} - - {/* Результат проверки - требуется доработка */} - {needsRevision && ( - - - ⚠️ - - - - Требуется доработка - - - (попытка №{finalSubmission?.attemptNumber}) - - - {finalSubmission?.feedback && ( - - {finalSubmission.feedback} - - )} - - - - )} + + ) : null} +