// app.js
const auth = require('./utils/auth.js')

App({
  onLaunch() {
    console.log('银行管理系统小程序启动')
    
    // 检查登录状态
    this.checkAuthStatus()
    
    // 设置全局错误处理
    this.setupErrorHandler()
  },

  onShow() {
    console.log('银行管理系统小程序显示')
  },

  onHide() {
    console.log('银行管理系统小程序隐藏')
  },

  /**
   * 检查认证状态
   */
  checkAuthStatus() {
    try {
      const isAuthenticated = auth.isAuthenticated()
      console.log('认证状态:', isAuthenticated)
      
      if (isAuthenticated) {
        const userInfo = auth.getUser()
        this.globalData.userInfo = userInfo
        console.log('用户信息:', userInfo)
      }
    } catch (error) {
      console.error('检查认证状态错误:', error)
    }
  },

  /**
   * 设置全局错误处理
   */
  setupErrorHandler() {
    // 监听未处理的Promise拒绝
    wx.onUnhandledRejection((res) => {
      console.error('未处理的Promise拒绝:', res)
      
      // 如果是认证相关错误，清除认证信息
      if (res.reason && res.reason.message && res.reason.message.includes('认证')) {
        auth.clearAuth()
        this.globalData.userInfo = null
      }
    })
  },

  /**
   * 全局登录方法
   */
  login(userInfo) {
    this.globalData.userInfo = userInfo
    console.log('全局登录:', userInfo)
  },

  /**
   * 全局登出方法
   */
  logout() {
    this.globalData.userInfo = null
    auth.clearAuth()
    console.log('全局登出')
  },

  /**
   * 检查是否需要登录
   */
  requireAuth() {
    if (!auth.isAuthenticated()) {
      wx.showModal({
        title: '需要登录',
        content: '此功能需要登录后才能使用',
        showCancel: false,
        success: () => {
          wx.reLaunch({
            url: '/pages/login/login'
          })
        }
      })
      return false
    }
    return true
  },

  globalData: {
    userInfo: null,
    baseUrl: 'https://ad.ningmuyun.com/bank/api',
    version: '1.0.0'
  }
})
