/**
 * 微信API使用示例
 * 展示如何使用api.js中的微信相关方法
 */

import api, { wechatAPI } from './api.js';

/**
 * 页面初始化时检查微信登录状态
 * 在Vue组件的mounted或created钩子中调用
 */
export async function initWechatLogin() {
  try {
    // 获取当前页面URL作为回调地址
    const redirectUri = window.location.origin + window.location.pathname;
    
    // 检查并处理登录
    const result = await api.wechat.checkAndLogin(redirectUri);
    
    if (result.success) {
      console.log('用户已登录，token:', result.token);
      if (result.userInfo) {
        console.log('用户信息:', result.userInfo);
        // 可以将用户信息保存到Vuex或其他状态管理中
      }
      return result;
    } else if (result.redirecting) {
      console.log('正在跳转到微信授权页面...');
      return result;
    } else {
      console.error('登录失败:', result.error);
      // 可以显示错误提示给用户
      return result;
    }
  } catch (error) {
    console.error('初始化微信登录失败:', error);
    return { success: false, error: error.message };
  }
}

/**
 * 带分享用户ID的登录
 * 当用户通过分享链接进入时使用
 * @param {number} cfUid - 分享用户ID
 */
export async function initWechatLoginWithShare(cfUid) {
  try {
    const redirectUri = window.location.origin + window.location.pathname;
    const result = await api.wechat.checkAndLogin(redirectUri, cfUid);
    
    if (result.success) {
      console.log('通过分享链接登录成功，分享用户ID:', cfUid);
      // 可以记录分享来源等信息
    }
    
    return result;
  } catch (error) {
    console.error('分享登录失败:', error);
    return { success: false, error: error.message };
  }
}

/**
 * 手动获取微信AppID
 * 一般情况下不需要单独调用，checkAndLogin会自动处理
 */
export async function getWechatAppId() {
  try {
    const result = await api.wechat.getWechatAppId();
    if (result.code === 200) {
      console.log('微信AppID:', result.data.appid);
      return result.data.appid;
    } else {
      throw new Error(result.message || '获取AppID失败');
    }
  } catch (error) {
    console.error('获取微信AppID失败:', error);
    throw error;
  }
}

/**
 * 手动处理微信登录
 * 当你已经有code时可以直接调用
 * @param {string} code - 微信授权code
 * @param {number} cfUid - 分享用户ID（可选）
 */
export async function handleWechatLogin(code, cfUid) {
  try {
    const result = await api.wechat.wechatLogin(code, cfUid);
    if (result.code === 200) {
      // 保存token
      localStorage.setItem('token', result.data.token);
      console.log('登录成功:', result.data);
      return result.data;
    } else {
      throw new Error(result.message || '登录失败');
    }
  } catch (error) {
    console.error('微信登录失败:', error);
    throw error;
  }
}

/**
 * 检查当前登录状态
 */
export function checkLoginStatus() {
  const token = localStorage.getItem('token');
  return {
    isLoggedIn: !!token,
    token: token
  };
}

/**
 * 退出登录
 */
export function logout() {
  localStorage.removeItem('token');
  console.log('已退出登录');
  // 可以跳转到登录页面或刷新页面
}

/**
 * Vue组件中的使用示例
 */
export const vueComponentExample = {
  async mounted() {
    // 检查URL参数中是否有分享用户ID
    const urlParams = new URLSearchParams(window.location.search);
    const cfUid = urlParams.get('cfUid');
    
    if (cfUid) {
      // 通过分享链接进入
      await initWechatLoginWithShare(parseInt(cfUid));
    } else {
      // 正常进入
      await initWechatLogin();
    }
  },
  
  methods: {
    async handleLogin() {
      const result = await initWechatLogin();
      if (result.success) {
        // 登录成功，可以跳转到其他页面或更新UI
        this.$router.push('/home');
      }
    },
    
    handleLogout() {
      logout();
      // 跳转到登录页面
      this.$router.push('/login');
    }
  }
};