/**
 * Token管理工具
 */

const TOKEN_KEY = 'access_token'
const REFRESH_TOKEN_KEY = 'refresh_token'
const USER_INFO_KEY = 'userInfo'

/**
 * 获取Token
 */
export function getToken() {
  return uni.getStorageSync(TOKEN_KEY)
}

/**
 * 设置Token
 */
export function setToken(token) {
  return uni.setStorageSync(TOKEN_KEY, token)
}

/**
 * 移除Token
 */
export function removeToken() {
  return uni.removeStorageSync(TOKEN_KEY)
}

/**
 * 获取RefreshToken
 */
export function getRefreshToken() {
  return uni.getStorageSync(REFRESH_TOKEN_KEY)
}

/**
 * 设置RefreshToken
 */
export function setRefreshToken(token) {
  return uni.setStorageSync(REFRESH_TOKEN_KEY, token)
}

/**
 * 获取用户信息
 */
export function getUserInfo() {
  try {
    const userInfo = uni.getStorageSync(USER_INFO_KEY)

    // 如果没有数据，返回 null
    if (!userInfo) {
      console.log('本地存储中没有用户信息')
      return null
    }

    // 如果已经是对象，直接返回
    if (typeof userInfo === 'object') {
      return userInfo
    }

    // 如果是字符串，尝试解析
    if (typeof userInfo === 'string') {
      return JSON.parse(userInfo)
    }

    return null
  } catch (error) {
    console.error('获取用户信息失败:', error)
    return null
  }
}

/**
 * 设置用户信息
 */
export function setUserInfo(userInfo) {
  return uni.setStorageSync(USER_INFO_KEY, JSON.stringify(userInfo))
}

/**
 * 移除用户信息
 */
export function removeUserInfo() {
  return uni.removeStorageSync(USER_INFO_KEY)
}

/**
 * 检查是否登录
 */
export function isLogin() {
  return !!(getToken() && getUserInfo())
}

/**
 * 清除所有认证信息
 */
export function clearAuth() {
  removeToken()
  uni.removeStorageSync(REFRESH_TOKEN_KEY)
  removeUserInfo()
}
