minor fixes

This commit is contained in:
rngsurrounded
2025-03-03 07:04:35 +09:00
parent a8f5185d26
commit 6c4d5e34b7
@@ -4,6 +4,7 @@ import CompetitionHeader from "./components/CompetitionHeader";
import TaskContent from "./components/TaskContent"; import TaskContent from "./components/TaskContent";
import TaskSolution from "./modules/TaskSolution"; import TaskSolution from "./modules/TaskSolution";
import { getCompetitionTasks, submitTaskSolution } from "@/shared/api/session"; import { getCompetitionTasks, submitTaskSolution } from "@/shared/api/session";
import { getCompetition } from "@/shared/api/competitions";
import { Loader2 } from "lucide-react"; import { Loader2 } from "lucide-react";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { TaskType } from "@/shared/types/task"; import { TaskType } from "@/shared/types/task";
@@ -15,6 +16,12 @@ const CompetitionSession = () => {
const competitionId = id || ""; const competitionId = id || "";
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const competitionQuery = useQuery({
queryKey: ["competition", competitionId],
queryFn: () => getCompetition(competitionId),
enabled: !!competitionId,
});
const tasksQuery = useQuery({ const tasksQuery = useQuery({
queryKey: ["competitionTasks", competitionId], queryKey: ["competitionTasks", competitionId],
queryFn: () => getCompetitionTasks(competitionId), queryFn: () => getCompetitionTasks(competitionId),
@@ -46,9 +53,12 @@ const CompetitionSession = () => {
} }
}); });
const competition = competitionQuery.data;
const tasks = tasksQuery.data || []; const tasks = tasksQuery.data || [];
const isLoading = tasksQuery.isLoading; const isLoading = tasksQuery.isLoading || competitionQuery.isLoading;
const error = tasksQuery.error ? "Не удалось загрузить задания. Пожалуйста, попробуйте позже." : null; const error = tasksQuery.error || competitionQuery.error
? "Не удалось загрузить данные. Пожалуйста, попробуйте позже."
: null;
const currentTask = tasks.find((t) => t.id === taskId) || null; const currentTask = tasks.find((t) => t.id === taskId) || null;
@@ -77,10 +87,12 @@ const CompetitionSession = () => {
submitMutation.mutate(); submitMutation.mutate();
}; };
const competitionTitle = competition?.title || "Загрузка соревнования...";
return ( return (
<div className="flex min-h-screen flex-col"> <div className="flex min-h-screen flex-col">
<CompetitionHeader <CompetitionHeader
title="Олимпиада DANO 2025. Индивидуальный этап" title={competitionTitle}
tasks={tasks} tasks={tasks}
competitionId={competitionId} competitionId={competitionId}
/> />
@@ -106,6 +118,7 @@ const CompetitionSession = () => {
selectedFile={selectedFile} selectedFile={selectedFile}
setSelectedFile={setSelectedFile} setSelectedFile={setSelectedFile}
onSubmit={handleSubmit} onSubmit={handleSubmit}
isSubmitting={submitMutation.isPending}
/> />
</div> </div>
) : ( ) : (