import { useCurrentTask } from "@/pages/CompetitionSession/providers/session-provider.tsx";
import { TaskType } from "@/shared/types/task.ts";
import { useQuery } from "@tanstack/react-query";
import { useSolutions } from "@/pages/CompetitionSession/providers/solution-provider.tsx";
import { ofetch } from "ofetch";
import { CodeAnswer } from "@/pages/CompetitionSession/widgets/answers/code.tsx";
import { InputAnswer } from "@/pages/CompetitionSession/widgets/answers/input.tsx";
import { FileAnswer } from "@/pages/CompetitionSession/widgets/answers/file.tsx";
const fetchSettings = {
refetchOnWindowFocus: false,
refetchOnMount: false,
refetchOnReconnect: false,
staleTime: Infinity,
};
export const SolutionAnswer = () => {
const { task } = useCurrentTask();
const { currentSolution } = useSolutions();
const contentQuery = useQuery({
queryKey: ["submission", currentSolution?.id],
queryFn: async () => {
if (!currentSolution) {
return null;
}
return await ofetch(currentSolution.content, {
parseResponse: (txt) => txt,
});
},
enabled:
!!currentSolution && [TaskType.INPUT, TaskType.CODE].includes(task.type),
...fetchSettings,
});
const fileQuery = useQuery({
queryKey: ["submission", currentSolution?.id],
queryFn: async () => {
if (!currentSolution) {
return null;
}
return await ofetch(currentSolution.content, { responseType: "blob" });
},
enabled: !!currentSolution && task.type === TaskType.FILE,
...fetchSettings,
});
switch (task.type) {
case TaskType.INPUT:
return (
);
case TaskType.CODE:
return (
);
case TaskType.FILE:
return (
);
}
};