/
voting
/
frontend
Обзор
Документация
Войти
/
voting
/
frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
src/api/voting.query.ts
66 строк
2 KB
TimPulin
042-participant-votes-client
19 июл 2026, 18:40
19 июл 2026, 18:40
20d7497
Код
Авторство
О чём код?
import { queryOptions, useQuery } from '@tanstack/react-query' import { votingService } from './voting.service' export const votingKeys = { all: ['voting'] as const, nominations: () => [...votingKeys.all, 'nominations'] as const, nominationsList: (eventId?: string) => [...votingKeys.nominations(), 'list', { eventId }] as const, nominationDetail: (id: string) => [...votingKeys.nominations(), 'detail', id] as const, events: () => [...votingKeys.all, 'events'] as const, currentNomination: (eventId: string) => [...votingKeys.events(), 'current-nomination', eventId] as const, votes: () => [...votingKeys.all, 'votes'] as const, myVotes: (eventId: string, userId: string) => [...votingKeys.votes(), 'me', { eventId, userId }] as const } export function nominationsListQueryOptions(eventId?: string) { return queryOptions({ queryKey: votingKeys.nominationsList(eventId), queryFn: () => votingService.listNominations(eventId) }) } export function useNominationsList(eventId?: string) { return useQuery(nominationsListQueryOptions(eventId)) } export function nominationDetailQueryOptions(id: string) { return queryOptions({ queryKey: votingKeys.nominationDetail(id), queryFn: () => votingService.getNomination(id), enabled: Boolean(id) }) } export function useNominationDetail(id: string) { return useQuery(nominationDetailQueryOptions(id)) } export function currentNominationQueryOptions(eventId: string) { return queryOptions({ queryKey: votingKeys.currentNomination(eventId), queryFn: () => votingService.getCurrentNomination(eventId), enabled: Boolean(eventId) }) } export function useCurrentNomination(eventId: string) { return useQuery(currentNominationQueryOptions(eventId)) } export function myVotesQueryOptions(eventId: string, userId: string) { return queryOptions({ queryKey: votingKeys.myVotes(eventId, userId), queryFn: () => votingService.listMyVotes(eventId, userId), enabled: Boolean(eventId) && Boolean(userId) }) } export function useMyVotes(eventId: string, userId: string) { return useQuery(myVotesQueryOptions(eventId, userId)) }