import { useUserStore } from '../store'

// 获取token
export const getToken = () => {
  const userStore = useUserStore()
  return userStore.getToken
}

// 设置token
export const setToken = (token) => {
  const userStore = useUserStore()
  userStore.setToken(token)
}

// 清除token
export const clearToken = () => {
  const userStore = useUserStore()
  userStore.clearToken()
}

// 检查是否已登录
export const isLoggedIn = () => {
  const userStore = useUserStore()
  return userStore.getIsLoggedIn
}

// 获取用户信息
export const getUserInfo = () => {
  const userStore = useUserStore()
  return userStore.getUserInfo
}

// 设置用户信息
export const setUserInfo = (userInfo) => {
  const userStore = useUserStore()
  userStore.setUserInfo(userInfo)
}

// 登录
export const login = (userInfo, token) => {
  const userStore = useUserStore()
  userStore.login(userInfo, token)
}

// 登出
export const logout = () => {
  try {
    const userStore = useUserStore()
    userStore.logout()
    
    // 额外的清理工作
    if (typeof localStorage !== 'undefined') {
      // 清空可能存在的其他用户相关数据
      const keysToRemove = []
      for (let i = 0; i < localStorage.length; i++) {
        const key = localStorage.key(i)
        if (key && (key.includes('user') || key.includes('token') || key.includes('auth'))) {
          keysToRemove.push(key)
        }
      }
      keysToRemove.forEach(key => localStorage.removeItem(key))
    }
    
    // 清空sessionStorage
    if (typeof sessionStorage !== 'undefined') {
      sessionStorage.clear()
    }
    
    console.log('Auth工具：用户数据已完全清空')
  } catch (error) {
    console.error('退出登录时发生错误:', error)
    throw error
  }
}

// 更新用户信息
export const updateUserInfo = (userInfo) => {
  const userStore = useUserStore()
  userStore.updateUserInfo(userInfo)
}

// 检查是否完全退出登录
export const isFullyLoggedOut = () => {
  const userStore = useUserStore()
  const hasUserInfo = userStore.getUserInfo !== null
  const hasToken = userStore.getToken !== null
  const isLoggedIn = userStore.getIsLoggedIn
  
  // 检查localStorage中是否还有用户相关数据
  let hasLocalStorageData = false
  if (typeof localStorage !== 'undefined') {
    hasLocalStorageData = localStorage.getItem('user-store') !== null
  }
  
  return !hasUserInfo && !hasToken && !isLoggedIn && !hasLocalStorageData
}

// 处理认证失败（500错误等）的通用函数
export const handleAuthFailure = (router = null, message = '用户信息已失效，请重新登录') => {
  try {
    console.log('处理认证失败，开始清空用户数据')
    
    // 清空用户数据
    logout()
    
    // 延迟一下确保状态清空完成
    setTimeout(() => {
      // 如果传入了router，跳转到首页
      if (router) {
        router.push('/')
      } else if (typeof window !== 'undefined') {
        // 如果没有router，尝试使用window.location
        window.location.href = '/'
      }
      
      // 显示提示消息
      if (typeof window !== 'undefined' && window.ElMessage) {
        window.ElMessage.warning(message)
      } else {
        console.warn(message)
        // 如果没有ElMessage，使用原生alert作为备用
        if (typeof window !== 'undefined' && window.alert) {
          window.alert(message)
        }
      }
    }, 100)
    
    console.log('认证失败处理完成')
  } catch (error) {
    console.error('处理认证失败时发生错误:', error)
  }
} 