diff --git a/services/frontend/src/pages/CompetitionSession/modules/TaskSolution/index.tsx b/services/frontend/src/pages/CompetitionSession/modules/TaskSolution/index.tsx index 3daea18..e39ffc5 100644 --- a/services/frontend/src/pages/CompetitionSession/modules/TaskSolution/index.tsx +++ b/services/frontend/src/pages/CompetitionSession/modules/TaskSolution/index.tsx @@ -17,7 +17,6 @@ interface TaskSolutionProps { selectedFile: File | null; setSelectedFile: (file: File | null) => void; onSubmit: () => void; - isSubmitting?: boolean; } const TaskSolution: React.FC = ({ @@ -33,6 +32,7 @@ const TaskSolution: React.FC = ({ const [selectedSolutionUrl, setSelectedSolutionUrl] = useState(null); const [currentSolution, setCurrentSolution] = useState(null); const { id: competitionId } = useParams<{ id: string }>(); + const previousTaskIdRef = useRef(null); const solutionsQuery = useQuery({ queryKey: ['solutionHistory', competitionId, task.id], @@ -44,21 +44,32 @@ const TaskSolution: React.FC = ({ useEffect(() => { if (solutionHistory.length > 0 && !currentSolution) { - setCurrentSolution(solutionHistory[0]); + setCurrentSolution(solutionHistory[solutionHistory.length - 1]); } }, [solutionHistory, currentSolution]); useEffect(() => { if (solutionHistory.length > 0 && currentSolution && solutionHistory[0].id !== currentSolution.id) { - setCurrentSolution(solutionHistory[0]); + setCurrentSolution(solutionHistory[solutionHistory.length - 1]); } }, [solutionHistory, currentSolution]); useEffect(() => { - setCurrentSolution(null); - setSelectedSolutionUrl(null); - }, [task.id]); + if (previousTaskIdRef.current !== task.id) { + setCurrentSolution(null); + setSelectedSolutionUrl(null); + + setAnswer(""); + setSelectedFile(null); + + if (solutionHistory.length > 0 && !solutionsQuery.isLoading) { + setCurrentSolution(solutionHistory[solutionHistory.length - 1]); + } + + previousTaskIdRef.current = task.id; + } + }, [task.id, solutionHistory, solutionsQuery.isLoading, setAnswer, setSelectedFile]); useEffect(() => { const loadSolutionContent = async () => { @@ -89,8 +100,8 @@ const TaskSolution: React.FC = ({ }; const handleSolutionSelect = (solution: Solution) => { - setCurrentSolution(solution); - setIsHistoryOpen(false); + setCurrentSolution(solution); + setIsHistoryOpen(false); }; const handleClearExistingFile = () => { @@ -110,7 +121,7 @@ const TaskSolution: React.FC = ({ {task.type === TaskType.INPUT && ( )} @@ -121,13 +132,14 @@ const TaskSolution: React.FC = ({ fileInputRef={fileInputRef} existingFileUrl={selectedSolutionUrl} onClearExistingFile={handleClearExistingFile} + isLoading={isSubmitting} /> )} {task.type === TaskType.CODE && ( )}