import { AdminDeleteUploadsReq, IAdminPostUploadsFileReq, AdminDeleteUploadsRes, AdminPostUploadsDownloadUrlReq, AdminUploadsDownloadUrlRes, AdminUploadsRes, } from "@pkorsholm/medusa" import { Response } from "@pkorsholm/medusa-js" import { useMutation, UseMutationOptions, useQueryClient } from "react-query" import { useMedusa } from "../../../contexts" import { buildOptions } from "../../utils/buildOptions" export const useAdminUploadFile = ( options?: UseMutationOptions< Response, Error, IAdminPostUploadsFileReq > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation((payload: IAdminPostUploadsFileReq) => { return client.admin.uploads.create(payload) }, buildOptions(queryClient, undefined, options)) } export const useAdminUploadProtectedFile = ( options?: UseMutationOptions< Response, Error, IAdminPostUploadsFileReq > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation((payload: IAdminPostUploadsFileReq) => { return client.admin.uploads.createProtected(payload) }, buildOptions(queryClient, undefined, options)) } export const useAdminCreatePresignedDownloadUrl = ( options?: UseMutationOptions< Response, Error, AdminPostUploadsDownloadUrlReq > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation( (payload: AdminPostUploadsDownloadUrlReq) => client.admin.uploads.getPresignedDownloadUrl(payload), buildOptions(queryClient, undefined, options) ) } export const useAdminDeleteFile = ( options?: UseMutationOptions< Response, Error, AdminDeleteUploadsReq > ) => { const { client } = useMedusa() const queryClient = useQueryClient() return useMutation( (payload: AdminDeleteUploadsReq) => client.admin.uploads.delete(payload), buildOptions(queryClient, undefined, options) ) }