import { defineStore } from 'pinia'
import { ref } from 'vue'
import { STORAGE_KEYS } from '@/constants/storage-keys'
import { setTokenData, getToken, removeToken } from '@/utils/storage'

/** 登录状态 */
export const useTokenStore = defineStore(STORAGE_KEYS.TOKEN, () => {
  // 从本地存储获取token
  const token = ref(getToken() || null)
  const isLogin = ref(!!token.value)

  /** 设置token并保存到本地 */
  const setToken = newToken => {
    token.value = newToken
    isLogin.value = true
		setTokenData(newToken)
  }

  /** 清除token */
  const clearToken = () => {
    token.value = null
    isLogin.value = false
    removeToken()
  }

  /** 检查token是否有效（可扩展过期时间判断） */
  const checkToken = () => {
    // 简单判断：token存在且不为空
    return !!token.value
  }

  /** 验证token是否过期（实际项目中可添加过期时间判断） */
  const isTokenExpired = () => {
    // 示例：如果token中包含过期时间，这里可以判断
    // 例如：const expireTime = parseInt(token.value.split('.')[1]);
    // return Date.now() > expireTime * 1000;
    return false // 默认不过期
  }

  return {
    token,
    isLogin,
    setToken,
    clearToken,
    checkToken,
    isTokenExpired
  }
})
