import { Loading } from "@/components/ui/loading"; import { getReviewer, getReviewerSubmissions } from "@/shared/api/review"; import { useQuery } from "@tanstack/react-query"; import { useNavigate, useParams } from "react-router"; import { ReviewHeader } from "./modules/review-header"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { ReviewsList } from "./modules/reviews-list"; import React from "react"; import { ReviewStatus } from "@/shared/types/review"; const ReviewPage = () => { const { token } = useParams<{ token: string }>(); const navigate = useNavigate(); const reviewerQuery = useQuery({ queryKey: ["reviewer", token], queryFn: async () => getReviewer(token || ""), retry: 0, }); const submissionsQuery = useQuery({ queryKey: ["submissions", token], queryFn: async () => getReviewerSubmissions(token || ""), retry: 0, }); const availableReviews = React.useMemo( () => (submissionsQuery.data?.submissions || []).filter( (s) => s.review_status === ReviewStatus.NOT_CHECKED, ), [submissionsQuery.data], ); const checkedReviews = React.useMemo( () => (submissionsQuery.data?.submissions || []).filter( (s) => s.review_status === ReviewStatus.CHECKED, ), [submissionsQuery.data], ); if (reviewerQuery.isLoading || submissionsQuery.isLoading) { return ; } if (!token || !reviewerQuery.data || !submissionsQuery.data) { navigate("/"); return; } return (

Решения

Доступные {availableReviews.length > 0 && (
{availableReviews.length}
)}
Проверенные
); }; export default ReviewPage;