feat: implement file upload functionality and enhance admin dashboard layout

This commit is contained in:
Ardeman
2025-03-10 12:21:08 +08:00
parent 8c2298ff61
commit 9a0c6c1f0b
9 changed files with 246 additions and 105 deletions
-2
View File
@@ -26,9 +26,7 @@ const usersResponseSchema = z.object({
data: z.array(userResponseSchema),
})
export type TSubscribePlanRespon = z.infer<typeof subscribePlanResponseSchema>
export type TUserResponse = z.infer<typeof userResponseSchema>
export type TSubscribeResponse = z.infer<typeof subscribeResponseSchema>
export const getUsers = async (parameters: THttpServer) => {
try {
+37
View File
@@ -0,0 +1,37 @@
import { z } from 'zod'
import type { TUploadSchema } from '~/layouts/admin/form-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)
}
}