Files
nuzlocke-tracker/frontend/src/hooks/useGenlockes.ts
Julian Tabel 972137acfb Fix TypeScript errors in frontend build
Cast boss type select value to union type and remove unused
AdvanceLegInput import.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 18:10:38 +01:00

70 lines
2.1 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { advanceLeg, createGenlocke, getGamesByRegion, getGenlockes, getGenlocke, getGenlockeGraveyard, getGenlockeLineages, getLegSurvivors } from '../api/genlockes'
import type { CreateGenlockeInput } from '../types/game'
export function useGenlockes() {
return useQuery({
queryKey: ['genlockes'],
queryFn: getGenlockes,
})
}
export function useGenlocke(id: number) {
return useQuery({
queryKey: ['genlockes', id],
queryFn: () => getGenlocke(id),
})
}
export function useGenlockeGraveyard(id: number) {
return useQuery({
queryKey: ['genlockes', id, 'graveyard'],
queryFn: () => getGenlockeGraveyard(id),
})
}
export function useGenlockeLineages(id: number) {
return useQuery({
queryKey: ['genlockes', id, 'lineages'],
queryFn: () => getGenlockeLineages(id),
})
}
export function useRegions() {
return useQuery({
queryKey: ['games', 'by-region'],
queryFn: getGamesByRegion,
})
}
export function useCreateGenlocke() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (data: CreateGenlockeInput) => createGenlocke(data),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['runs'] })
queryClient.invalidateQueries({ queryKey: ['genlockes'] })
},
})
}
export function useLegSurvivors(genlockeId: number, legOrder: number, enabled: boolean) {
return useQuery({
queryKey: ['genlockes', genlockeId, 'legs', legOrder, 'survivors'],
queryFn: () => getLegSurvivors(genlockeId, legOrder),
enabled,
})
}
export function useAdvanceLeg() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: ({ genlockeId, legOrder, transferEncounterIds }: { genlockeId: number; legOrder: number; transferEncounterIds?: number[] }) =>
advanceLeg(genlockeId, legOrder, transferEncounterIds ? { transferEncounterIds } : undefined),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['runs'] })
queryClient.invalidateQueries({ queryKey: ['genlockes'] })
},
})
}