import { adminClient } from '@/shared/api/adminClient' import type { ApiResponse } from '@/shared/api/types' import type { AdminCaptcha, AdminLoginData, AdminOrderDetail, AdminOrderPage, AdminOrderQuery, AdminUser, DashboardData, } from '@/features/admin/types' export async function fetchAdminCaptcha() { const { data } = await adminClient.get>('/admin/auth/captcha') return data.data } export async function loginAdmin( username: string, password: string, captchaId: string, captchaCode: string ) { const { data } = await adminClient.post>('/admin/auth/login', { username, password, captcha_id: captchaId, captcha_code: captchaCode, }) return data.data } export async function fetchAdminMe() { const { data } = await adminClient.get>('/admin/me') return data.data } export async function logoutAdmin() { await adminClient.post('/admin/auth/logout') } export async function changeAdminPassword(oldPassword: string, newPassword: string) { await adminClient.put('/admin/admin-users/me/password', { old_password: oldPassword, new_password: newPassword, }) } export async function fetchAdminDashboard() { const { data } = await adminClient.get>('/admin/dashboard') return data.data } function compactParams(query: AdminOrderQuery) { return Object.fromEntries( Object.entries(query).filter(([, value]) => value !== '' && value != null) ) } export async function fetchAdminOrders(query: AdminOrderQuery) { const { data } = await adminClient.get>>('/admin/orders', { params: compactParams(query), }) return { items: data.data.items ?? [], total: data.data.total ?? 0, page: data.data.page ?? query.page ?? 1, page_size: data.data.page_size ?? query.page_size ?? 20, } } export async function fetchAdminOrder(id: number | string) { const { data } = await adminClient.get>(`/admin/orders/${id}`) return data.data }