import React, { useState } from "react"; import { CompetitionGrid } from "./modules/CompetitionsGrid"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { useQuery } from "@tanstack/react-query"; import { getCompetitions } from "@/shared/api/competitions"; import { NoActiveCompetitions, NoCompetitions, NoCompletedCompetitions, } from "./modules/NoCompetitions"; import { TabsContent } from "@radix-ui/react-tabs"; import { Loading } from "@/components/ui/loading"; import { CompetitionState } from "@/shared/types/competition"; enum CompetitionTab { ONGOING = "ongoing", COMPLETED = "completed", } const CompetitionsPage = () => { const [activeTab, setActiveTab] = useState(CompetitionTab.ONGOING); const activeCompetitionsQuery = useQuery({ queryKey: ["active-competitions"], queryFn: async () => getCompetitions(true), retry: 1, }); const inactiveCompetitionsQuery = useQuery({ queryKey: ["inactive-competitions"], queryFn: async () => getCompetitions(false), retry: 1, }); const startedCompetitions = React.useMemo( () => (activeCompetitionsQuery.data ?? []).filter( (comp) => comp.state === CompetitionState.STARTED, ), [activeCompetitionsQuery.data], ); const finishedCompetitions = React.useMemo( () => (activeCompetitionsQuery.data ?? []).filter( (comp) => comp.state === CompetitionState.FINISHED, ), [activeCompetitionsQuery.data], ); if ( activeCompetitionsQuery.isLoading || inactiveCompetitionsQuery.isLoading ) { return ; } return (
{(activeCompetitionsQuery.data ?? []).length > 0 && (
Мои события Прохожу Завершено {startedCompetitions.length > 0 ? ( ) : ( )} {finishedCompetitions.length > 0 ? ( ) : ( )}
)}
События {(inactiveCompetitionsQuery.data ?? []).length > 0 ? ( ) : ( )}
); }; const Section = ({ children }: { children: React.ReactNode }) => { return
{children}
; }; const SectionHeader = ({ children }: { children: React.ReactNode }) => { return (
{children}
); }; const SectionTitle = ({ children }: { children: React.ReactNode }) => { return

{children}

; }; export default CompetitionsPage;