import { z } from 'zod' import type { TUploadSchema } from '~/layouts/admin/dialog-upload' import { HttpServer, type THttpServer } from '~/libs/http-server' const uploadResponseSchema = z.object({ data: z.object({ message: z.string(), data: z.object({ file_path: z.string(), file_url: z.string(), }), }), }) type TParameter = { payload: TUploadSchema & { file: File } } & THttpServer export const uploadFileRequest = async (parameters: TParameter) => { const { payload, ...restParameters } = parameters const formdata = new FormData() formdata.append('file', payload.file) try { const { data } = await HttpServer(restParameters).post( '/api/file', formdata, ) return uploadResponseSchema.parse(data) } catch (error) { // eslint-disable-next-line unicorn/no-useless-promise-resolve-reject return Promise.reject(error) } }