// APP连接状态管理器
class AppConnectionManager {
  constructor() {
    this.connected = false
    this.connecting = false
    this.headerInfo = null
    this.connectionPromise = null
    this.lastConnectTime = null
    this.connectionTimeout = 5 * 60 * 1000 // 5分钟超时重连
  }

  // 检查是否需要重新连接
  needsReconnect() {
    if (!this.connected) return true
    if (!this.lastConnectTime) return true
    
    const now = Date.now()
    return (now - this.lastConnectTime) > this.connectionTimeout
  }

  // 获取连接状态
  isConnected() {
    return this.connected && !this.needsReconnect()
  }

  // 获取头部信息
  getHeaderInfo() {
    return this.headerInfo
  }

  // 设置连接状态
  setConnected(headerInfo = null) {
    this.connected = true
    this.connecting = false
    this.headerInfo = headerInfo
    this.lastConnectTime = Date.now()
    this.connectionPromise = null
    console.debug('✅ APP连接状态已更新')
  }

  // 设置连接中状态
  setConnecting(promise) {
    this.connecting = true
    this.connectionPromise = promise
  }

  // 重置连接状态
  reset() {
    this.connected = false
    this.connecting = false
    this.headerInfo = null
    this.connectionPromise = null
    this.lastConnectTime = null
    console.debug('🔄 APP连接状态已重置')
  }

  // 获取当前连接Promise
  getConnectionPromise() {
    return this.connectionPromise
  }

  // 是否正在连接中
  isConnecting() {
    return this.connecting
  }
}

// 创建全局实例
export const appConnectionManager = new AppConnectionManager()

// 导出便捷方法
export const isAppConnected = () => appConnectionManager.isConnected()
export const getAppHeaderInfo = () => appConnectionManager.getHeaderInfo()
export const resetAppConnection = () => appConnectionManager.reset()
