/**
 * 统一认证模式判定逻辑
 * 用于解决 store 与 router 判定规则不一致的问题
 * PRD 9.x 默认行为：未登录自动进入演示模式
 */

// 检测是否启用演示模式（通过 demo auth 开关）
export function isDemoAuthEnabled(): boolean {
  const enabled = import.meta.env.VITE_MOSQUITO_DEMO_AUTH_ENABLED
  return enabled === 'true'
}

// 获取认证模式
// 返回值: 'demo' | 'real'
// 判定逻辑:
// - demo: 强制演示模式
// - auto 或未配置: 未登录自动进入演示模式（符合 PRD 默认行为）
// - real: 真实模式
export function getAuthMode(): 'demo' | 'real' {
  // 如果 demo auth 未启用，直接返回真实模式
  if (!isDemoAuthEnabled()) {
    return 'real'
  }

  const envMode = import.meta.env.VITE_MOSQUITO_AUTH_MODE

  // demo: 强制演示模式
  // auto 或未配置: 未登录自动进入演示模式（符合 PRD 默认行为）
  // real: 真实模式
  if (envMode === 'demo') {
    return 'demo'
  }

  // auto 或未配置，默认进入演示模式
  if (envMode === 'auto' || !envMode) {
    return 'demo'
  }

  return 'real'
}

// 检测是否为真实模式
export function isRealMode(): boolean {
  return getAuthMode() === 'real'
}

// 检测是否为演示模式
export function isDemoMode(): boolean {
  return getAuthMode() === 'demo'
}

// 检测是否配置为 auto 模式
export function isAutoMode(): boolean {
  return import.meta.env.VITE_MOSQUITO_AUTH_MODE === 'auto'
}
