import { useQuery } from '@tanstack/react-query'
import { getPokemon, fetchPokemonFamilies, fetchPokemonEncounterLocations, fetchPokemonEvolutionChain } from '../api/pokemon'

export function usePokemon(id: number | null) {
  return useQuery({
    queryKey: ['pokemon', id],
    queryFn: () => getPokemon(id!),
    enabled: id !== null,
  })
}

export function usePokemonFamilies() {
  return useQuery({
    queryKey: ['pokemon', 'families'],
    queryFn: fetchPokemonFamilies,
    staleTime: Infinity,
  })
}

export function usePokemonEncounterLocations(pokemonId: number | null) {
  return useQuery({
    queryKey: ['pokemon', pokemonId, 'encounter-locations'],
    queryFn: () => fetchPokemonEncounterLocations(pokemonId!),
    enabled: pokemonId !== null,
  })
}

export function usePokemonEvolutionChain(pokemonId: number | null) {
  return useQuery({
    queryKey: ['pokemon', pokemonId, 'evolution-chain'],
    queryFn: () => fetchPokemonEvolutionChain(pokemonId!),
    enabled: pokemonId !== null,
  })
}
