first init
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import { api } from '@/core/services/api'
|
||||
import type {
|
||||
UpdatePasswordPayload,
|
||||
UpdatePasswordResponse,
|
||||
UpdateProfilePayload,
|
||||
UpdateProfileResponse,
|
||||
} from '../types/profile.types'
|
||||
|
||||
function appendIfDefined(formData: FormData, key: string, value: string | undefined) {
|
||||
if (value !== undefined && value !== '') {
|
||||
formData.append(key, value)
|
||||
}
|
||||
}
|
||||
|
||||
export async function uploadProfileImage(image: File): Promise<UpdateProfileResponse> {
|
||||
const formData = new FormData()
|
||||
formData.append('image', image)
|
||||
|
||||
const { data } = await api.post<UpdateProfileResponse>('/v1/profile', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
})
|
||||
return data
|
||||
}
|
||||
|
||||
export async function updateProfile(payload: UpdateProfilePayload): Promise<UpdateProfileResponse> {
|
||||
const hasImage = payload.image instanceof File
|
||||
|
||||
if (hasImage) {
|
||||
const formData = new FormData()
|
||||
formData.append('name', payload.name!.trim())
|
||||
appendIfDefined(formData, 'ic_number', payload.ic_number)
|
||||
appendIfDefined(formData, 'position', payload.position)
|
||||
appendIfDefined(formData, 'phone_number', payload.phone_number)
|
||||
formData.append('image', payload.image!)
|
||||
|
||||
const { data } = await api.post<UpdateProfileResponse>('/v1/profile', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
})
|
||||
return data
|
||||
}
|
||||
|
||||
const body: Record<string, string> = {
|
||||
name: payload.name!.trim(),
|
||||
}
|
||||
|
||||
if (payload.ic_number?.trim()) body.ic_number = payload.ic_number.trim()
|
||||
if (payload.position?.trim()) body.position = payload.position.trim()
|
||||
if (payload.phone_number?.trim()) body.phone_number = payload.phone_number.trim()
|
||||
|
||||
const { data } = await api.post<UpdateProfileResponse>('/v1/profile', body)
|
||||
return data
|
||||
}
|
||||
|
||||
export async function updatePassword(payload: UpdatePasswordPayload): Promise<UpdatePasswordResponse> {
|
||||
const { data } = await api.put<UpdatePasswordResponse>('/v1/profile/password', payload)
|
||||
return data
|
||||
}
|
||||
Reference in New Issue
Block a user