From b71d062bfef6903eb0aca3a158a0a558a6ac7eb2 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sat, 14 Mar 2026 15:43:31 +0330 Subject: [PATCH] uploader --- src/pages/uploader/hooks/useUploaderData.ts | 14 +++++++++ src/pages/uploader/service/UploaderService.ts | 31 +++++++++++++++++++ src/pages/uploader/types/Types.ts | 16 ++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/pages/uploader/hooks/useUploaderData.ts create mode 100644 src/pages/uploader/service/UploaderService.ts create mode 100644 src/pages/uploader/types/Types.ts 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;