import { useEffect } from 'react';
import { useAuthStore, checkAndMigrateStore } from '@/store/authStore';
import { refreshToken, getToken } from '@/api/client';

/** 兼容旧代码的 Hook 导出 — 现在基于共享 Zustand store */
export function useAuth() {
  const store = useAuthStore();

  // 应用启动时检查 localStorage 版本并尝试自动刷新 token
  useEffect(() => {
    // 检查 localStorage 数据版本兼容性
    checkAndMigrateStore();

    // 如果已登录，尝试验证 token 有效性
    const token = getToken();
    if (token) {
      // 尝试刷新 token 来验证其有效性
      refreshToken()
        .then((resp) => {
          if (resp.error || !resp.data?.token) {
            // token 无效，清除状态
            console.log('[useAuth] token 刷新失败，清除认证状态');
            store.clearAuth();
          }
          // 刷新成功，token 已由 refreshToken 自动存储
        })
        .catch(() => {
          // 网络错误等，不强制清除（可能是离线状态）
          console.warn('[useAuth] token 验证网络错误，保留当前状态');
        });
    }
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []); // 仅在挂载时运行一次

  return store;
}
