/**
 * 认证工具函数
 * 提供登录状态检查、token管理等功能
 */

/**
 * 获取本地存储的token
 */
export const getToken = (): string => {
  return uni.getStorageSync('access_token') || '';
};

/**
 * 保存token到本地存储
 */
export const setToken = (token: string): void => {
  uni.setStorageSync('access_token', token);
};

/**
 * 清除本地存储的token
 */
export const removeToken = (): void => {
  uni.removeStorageSync('access_token');
};

/**
 * 检查是否已登录
 */
export const isLoggedIn = (): boolean => {
  return !!getToken();
};

/**
 * 获取用户信息
 */
export const getUserInfo = (): any => {
  return uni.getStorageSync('haha-user-info') || null;
};

/**
 * 保存用户信息
 */
export const setUserInfo = (userInfo: any): void => {
  uni.setStorageSync('haha-user-info', userInfo);
};

/**
 * 清除用户信息
 */
export const removeUserInfo = (): void => {
  uni.removeStorageSync('haha-user-info');
};

/**
 * 清除所有登录信息
 */
export const clearAuth = (): void => {
  removeToken();
  removeUserInfo();
};

/**
 * 路由守卫：检查登录状态
 * 如果未登录，则跳转到登录页
 * @param redirectUrl 登录后要跳转的页面（可选）
 * @returns 是否已登录
 */
export const checkAuth = (redirectUrl?: string): boolean => {
  if (!isLoggedIn()) {
    // 构建登录页URL，带上redirect参数
    let loginUrl = '/pages/login/login';
    if (redirectUrl) {
      loginUrl += `?redirect=${encodeURIComponent(redirectUrl)}`;
    }
    
    uni.reLaunch({
      url: loginUrl
    });
    
    return false;
  }
  
  return true;
};

/**
 * 退出登录
 */
export const logout = (): void => {
  clearAuth();
  uni.reLaunch({
    url: '/pages/login/login'
  });
};
