30 lines
982 B
JavaScript
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,
|
|
});
|
|
}; |