import React, { useState } from 'react';
import {
Box,
Container,
Heading,
VStack,
SimpleGrid,
Spinner,
Text,
Alert,
AlertIcon,
Tabs,
TabList,
TabPanels,
Tab,
TabPanel,
Badge,
useColorModeValue,
} from '@chakra-ui/react';
import { useQuery } from '@tanstack/react-query';
import MainLayout from '../components/layout/MainLayout';
import PollCard from '../components/polls/PollCard';
import { getPolls, getPoll } from '../services/polls';
const PollsPage: React.FC = () => {
const [tabIndex, setTabIndex] = useState(0);
const bgSection = useColorModeValue('white', 'gray.800');
// Fetch all active polls
const { data: polls, isLoading } = useQuery({
queryKey: ['polls'],
queryFn: () => getPolls(),
staleTime: 2 * 60 * 1000,
});
// Get full data for each poll
const { data: pollsData, isLoading: isLoadingPolls } = useQuery({
queryKey: ['polls-details', polls?.map((p) => p.id)],
queryFn: async () => {
if (!polls || polls.length === 0) return [];
const promises = polls.map((poll) => getPoll(poll.id));
return await Promise.all(promises);
},
enabled: !!polls && polls.length > 0,
});
// Filter polls
const featuredPolls = pollsData?.filter((p) => p.poll.featured) || [];
const activePolls = pollsData?.filter((p) => p.is_active) || [];
const allPolls = pollsData || [];
if (isLoading || isLoadingPolls) {
return (
Načítání anket...
);
}
if (!polls || polls.length === 0) {
return (
Ankety a hlasování
Momentálně nejsou k dispozici žádné ankety. Brzy přidáme nové!
);
}
return (
Ankety a hlasování
Hlasujte v anketách a podělte se o svůj názor s ostatními fanoušky!
Všechny
{allPolls.length > 0 && (
{allPolls.length}
)}
Aktivní
{activePolls.length > 0 && (
{activePolls.length}
)}
{featuredPolls.length > 0 && (
Zvýrazněné
{featuredPolls.length}
)}
{/* All Polls */}
{allPolls.map((pollResponse) => (
))}
{/* Active Polls */}
{activePolls.length > 0 ? (
{activePolls.map((pollResponse) => (
))}
) : (
Momentálně nejsou k dispozici žádné aktivní ankety.
)}
{/* Featured Polls */}
{featuredPolls.length > 0 && (
{featuredPolls.map((pollResponse) => (
))}
)}
);
};
export default PollsPage;