import { AdminPostReservationsReq, AdminPostReservationsReservationReq, AdminReservationsDeleteRes, AdminReservationsRes, } from "@medusajs/medusa" import { UseMutationOptions, useMutation, useQueryClient, } from "@tanstack/react-query" import { Response } from "@medusajs/medusa-js/src" import { adminReservationsKeys } from "./queries" import { buildOptions } from "../../utils/buildOptions" import { useMedusa } from "../../../contexts" export const useAdminCreateReservation = ( options?: UseMutationOptions< Response, Error, AdminPostReservationsReq > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation( (payload: AdminPostReservationsReq) => client.admin.reservations.create(payload), buildOptions(queryClient, [adminReservationsKeys.lists()], options) ) } export const useAdminUpdateReservation = ( id: string, options?: UseMutationOptions< Response, Error, AdminPostReservationsReq > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation( (payload: AdminPostReservationsReservationReq) => client.admin.reservations.update(id, payload), buildOptions( queryClient, [adminReservationsKeys.lists(), adminReservationsKeys.detail(id)], options ) ) } export const useAdminDeleteReservation = ( id: string, options?: UseMutationOptions< Response, Error, void > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation( () => client.admin.reservations.delete(id), buildOptions( queryClient, [adminReservationsKeys.lists(), adminReservationsKeys.detail(id)], options ) ) }