diff --git a/src/pages/uploader/hooks/useUploaderData.ts b/src/pages/uploader/hooks/useUploaderData.ts new file mode 100644 index 0000000..04e5cbd --- /dev/null +++ b/src/pages/uploader/hooks/useUploaderData.ts @@ -0,0 +1,14 @@ +import { useMutation } from "@tanstack/react-query"; +import * as api from "../service/UploaderService"; + +export const useSingleUpload = () => { + return useMutation({ + mutationFn: api.singleUpload, + }); +}; + +export const useMultipleUpload = () => { + return useMutation({ + mutationFn: api.multipleUpload, + }); +}; diff --git a/src/pages/uploader/service/UploaderService.ts b/src/pages/uploader/service/UploaderService.ts new file mode 100644 index 0000000..299478f --- /dev/null +++ b/src/pages/uploader/service/UploaderService.ts @@ -0,0 +1,31 @@ +import axios from "@/config/axios"; +import type { + SingleUploadResponse, + MultipleUploadResponse, +} from "../types/Types"; + +export const singleUpload = async ( + file: File +): Promise => { + const formData = new FormData(); + formData.append("file", file); + const { data } = await axios.post( + `/admin/single-file`, + formData + ); + return data; +}; + +export const multipleUpload = async ( + files: File[] +): Promise => { + const formData = new FormData(); + files.forEach((file) => { + formData.append("files", file); + }); + const { data } = await axios.post( + `/admin/multi-file`, + formData + ); + return data; +}; diff --git a/src/pages/uploader/types/Types.ts b/src/pages/uploader/types/Types.ts new file mode 100644 index 0000000..f52ab21 --- /dev/null +++ b/src/pages/uploader/types/Types.ts @@ -0,0 +1,16 @@ +import type { BaseResponse } from "@/shared/types/SharedTypes"; + +export type UploadedFile = { + key: string; + url: string; + bucket: string; +}; + +export type SingleUploadResponseData = { + file: UploadedFile; + url: string; +}; + +export type SingleUploadResponse = BaseResponse; + +export type MultipleUploadResponse = BaseResponse;