Feat(medusa-js, medusa-react): Upload endpoints in medusa js and react (#1716)

* export types from admin uploads

* add delete and download to medusa-js

* add upload endpoints to hooks

* remove upload from js and react

* pr feedback

* Apply suggestions from code review

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>

* rename types for admin uploads

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
Philip Korsholm
2022-06-29 11:36:19 +02:00
committed by GitHub
parent bf47d1aecd
commit 9018d270be
11 changed files with 187 additions and 25 deletions

View File

@@ -0,0 +1 @@
export * from "./mutations"

View File

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