import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { createEncounter, updateEncounter, deleteEncounter, fetchEvolutions, } from '../api/encounters' import type { CreateEncounterInput, UpdateEncounterInput } from '../types/game' export function useCreateEncounter(runId: number) { const queryClient = useQueryClient() return useMutation({ mutationFn: (data: CreateEncounterInput) => createEncounter(runId, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['runs', runId] }) }, }) } export function useUpdateEncounter(runId: number) { const queryClient = useQueryClient() return useMutation({ mutationFn: ({ id, data, }: { id: number data: UpdateEncounterInput }) => updateEncounter(id, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['runs', runId] }) }, }) } export function useDeleteEncounter(runId: number) { const queryClient = useQueryClient() return useMutation({ mutationFn: (id: number) => deleteEncounter(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['runs', runId] }) }, }) } export function useEvolutions(pokemonId: number | null) { return useQuery({ queryKey: ['evolutions', pokemonId], queryFn: () => fetchEvolutions(pokemonId!), enabled: pokemonId !== null, }) }