Assignment_4/src/hooks/useRecipe.js

30 lines
982 B
JavaScript

/* eslint-disable no-unsafe-optional-chaining */
import { useQuery } from "@tanstack/react-query";
import { fetchRecipeDetails } from "../components/apiUtils/allApi";
export const useDetailedRecipes = (searchQuery, filters) => {
return useQuery({
queryKey: ["detailedRecipes", searchQuery, filters],
queryFn: async () => {
const params = new URLSearchParams({
apiKey: "2bed23978b4d417081acee70da2f9f5f",
query: searchQuery,
cuisine: filters?.cuisine,
...(filters?.diet && { diet: filters?.diet }),
...(filters?.maxTime && { maxReadyTime: filters?.maxTime }),
});
const response = await fetch(
`https://api.spoonacular.com/recipes/complexSearch?${params}`
);
const { results } = await response?.json();
const detailedRecipes = await Promise?.all(
results?.map((recipe) => fetchRecipeDetails(recipe?.id))
);
return detailedRecipes;
},
enabled: true,
});
};