import React, { useState, useRef } from 'react'; import { useParams } from 'react-router-dom'; import { Task, TaskType, Solution } from '@/shared/types/task'; import { useQuery } from '@tanstack/react-query'; import { getTaskSolutionHistory } from '@/shared/api/session'; import SolutionStatus from './components/SolutionStatus'; import InputSolution from './components/InputSolution'; import FileSolution from './components/FileSolution'; import CodeSolution from './components/CodeSolution'; import ActionButtons from './components/ActionButtons'; import SolutionHistorySheet from './components/SolutionHistorySheet'; interface TaskSolutionProps { task: Task; answer: string; setAnswer: (value: string) => void; selectedFile: File | null; setSelectedFile: (file: File | null) => void; onSubmit: () => void; } const TaskSolution: React.FC = ({ task, answer, setAnswer, selectedFile, setSelectedFile, onSubmit, }) => { const fileInputRef = useRef(null); const [isHistoryOpen, setIsHistoryOpen] = useState(false); const { id: competitionId } = useParams<{ id: string }>(); const solutionsQuery = useQuery({ queryKey: ['solutionHistory', competitionId, task.id], queryFn: () => getTaskSolutionHistory(competitionId || '', task.id), enabled: !!(competitionId && task.id), }); const solutionHistory = solutionsQuery.data || []; const handleOpenHistory = () => { setIsHistoryOpen(true); }; const latestSolution = solutionHistory && solutionHistory.length > 0 ? solutionHistory[solutionHistory.length - 1] : null; return (
{latestSolution ? ( ) : (
Решение еще не отправлено
)} {task.type === TaskType.INPUT && ( )} {task.type === TaskType.FILE && ( )} {task.type === TaskType.CODE && ( )}
); }; export default TaskSolution;