Files
postshop-frontend/lib/hooks/useFavorites.ts
Jelaletdin12 fdec9e4b0e first commit
2025-11-10 10:07:48 +05:00

43 lines
1.1 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"
import { apiClient } from "@/lib/api"
import type { Favorite } from "@/lib/types/api"
export function useFavorites() {
return useQuery({
queryKey: ["favorites"],
queryFn: async () => {
const response = await apiClient.get<Favorite[]>("/favorites")
return response.data
},
staleTime: 1000 * 60 * 5,
retry: 1,
})
}
export function useAddToFavorites() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: async (productId: number) => {
const response = await apiClient.post<Favorite[]>("/favorites", { product_id: productId })
return response.data
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["favorites"] })
},
})
}
export function useRemoveFromFavorites() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: async (productId: number) => {
await apiClient.delete(`/favorites/${productId}`)
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["favorites"] })
},
})
}