Source: api/user.js

import request from '../utils/request'

/**
 * @module UserAPI
 * @description 包含用户账户信息和操作相关的 API 请求。
 */

/**
 * @typedef {object} UserAvatarUploadPayload
 * @property {FormData} avatar - 包含头像文件(字段名为 'avatar')的 FormData 对象。
 */

/**
 * @typedef {object} UserInfoResponseData
 * @property {string} _id - 用户ID。
 * @property {string} username - 用户名。
 * @property {string} [avatar] - 用户头像URL。
 * @property {string} phoneNumber - 手机号码。
 * @property {string[]} [favoriteGames] - 收藏的游戏列表(可选)。
 * @property {string[]} [groups] - 所属群组列表(可选)。
 */

/**
 * @typedef {object} UpdateUserInfoPayload
 * @property {string} username - 用户名。
 * @property {string} phoneNumber - 手机号码(中国格式)。
 * @property {string} [avatar] - 头像 URL (Swagger中被标记为 required,但这里可能指通过其他API更新后的URL)。
 */

/**
 * 更新用户头像。
 * @function uploadUserAvatar
 * @param {FormData} avatar - 包含头像文件(字段名为 'avatar')的 FormData 对象。
 * @returns {Promise<object>} 包含头像上传结果和新头像 URL 的 Promise 对象。
 */
export const uploadUserAvatar = (avatar) => {
  return request.put('/api/auth/me/avatar', avatar, { showGlobalLoading: true })
}

/**
 * 获取用户信息。
 * @function getUserInfo
 * @returns {Promise<object>} 包含用户详细信息(如 ID、用户名、头像等)的 Promise 对象。
 */
export const getUserInfo = () => {
  return request.get('/api/auth/info')
}

/**
 * 更新用户信息。
 * @function updateUserInfo
 * @param {UpdateUserInfoPayload} data - 请求体数据,包含要更新的用户名和手机号码。
 * @returns {Promise<object>} 包含用户信息更新结果的 Promise 对象。
 */
export const updateUserInfo = (data) => {
  return request.put('/api/auth/update', data, { showGlobalLoading: true })
}

/**
 * 删除用户。
 * @function deleteUser
 * @returns {Promise<object>} 包含用户删除操作结果的 Promise 对象。
 */
export const deleteUser = () => {
  return request.delete('/api/auth/delete', { showGlobalLoading: true })
}