Files
medusa-store/packages/admin-next/dashboard/src/hooks/api/shipping-options.ts
2024-05-03 11:51:55 +02:00

92 lines
2.2 KiB
TypeScript

import {
QueryKey,
useMutation,
UseMutationOptions,
useQuery,
UseQueryOptions,
} from "@tanstack/react-query"
import {
ShippingOptionDeleteRes,
ShippingOptionRes,
} from "../../types/api-responses"
import {
CreateShippingOptionReq,
UpdateShippingOptionReq,
} from "../../types/api-payloads"
import { stockLocationsQueryKeys } from "./stock-locations"
import { queryClient } from "../../lib/medusa"
import { client } from "../../lib/client"
export const useShippingOptions = (
query?: Record<string, any>,
options?: Omit<
UseQueryOptions<any, Error, any, QueryKey>,
"queryFn" | "queryKey"
>
) => {
const { data, ...rest } = useQuery({
queryFn: () => client.shippingOptions.list(query),
queryKey: stockLocationsQueryKeys.all,
...options,
})
return { ...data, ...rest }
}
export const useCreateShippingOptions = (
options?: UseMutationOptions<
ShippingOptionRes,
Error,
CreateShippingOptionReq
>
) => {
return useMutation({
mutationFn: (payload) => client.shippingOptions.create(payload),
onSuccess: (data, variables, context) => {
queryClient.invalidateQueries({
queryKey: stockLocationsQueryKeys.all,
})
options?.onSuccess?.(data, variables, context)
},
...options,
})
}
export const useUpdateShippingOptions = (
id: string,
options?: UseMutationOptions<
ShippingOptionRes,
Error,
UpdateShippingOptionReq
>
) => {
return useMutation({
mutationFn: (payload) => client.shippingOptions.update(id, payload),
onSuccess: (data, variables, context) => {
queryClient.invalidateQueries({
queryKey: stockLocationsQueryKeys.all,
})
options?.onSuccess?.(data, variables, context)
},
...options,
})
}
export const useDeleteShippingOption = (
optionId: string,
options?: UseMutationOptions<ShippingOptionDeleteRes, Error, void>
) => {
return useMutation({
mutationFn: () => client.shippingOptions.delete(optionId),
onSuccess: (data: any, variables: any, context: any) => {
queryClient.invalidateQueries({
queryKey: stockLocationsQueryKeys.all,
})
options?.onSuccess?.(data, variables, context)
},
...options,
})
}