package com.yidian.bcommon.constant


/**
 * 运行配置，提供切换运行环境的能力（变量配置）
 *
 * ⚠️⚠️注意：对于使用包名注册的三方SDK，目前不支持使用RunConfig切换，需要使用Flavor进行区分
 * 例如：高德地图
 */
object RunConfig {

  enum class RunEnvironment {
    DEV,// 开发环境
    TEST,// 测试环境
    PROD// 生产环境
  }

  // 以下配置默认为开发环境,切记以下变量只能在此类中进行赋值，其他均为使用方
  var API_URL = AppConfig.DEV_DOMAIN // 服务域名
  var IS_ENCRYPT: Boolean = false      // true : 开启加密
  var IS_ENCRYPT_DEBUG_KEY = true      // false: 使用正式加密key
  var IS_UMENG_RELEASE = false         // true : 友盟生产
  var IS_UPGRADE_ONLINE = false        // true : 版本升级生产配置
  var SERVICE_VERSION = "000100"       // 后台版本，上线前需要和服务端确认并更新
  var TOWER_API_ENV = 0                // Tower Api环境 0:测试环境 1:内网-正式环境 2:外网-正式环境 3:内网外网-正式环境
  var XINSIGHT_ENV = 0                 // 慧眼SDK环境    0:开发环境 1:测试环境 2:预生产环境 3:生产环境

  /**
   * 切换环境
   */
  fun switchEnvironment(runEnvironment: RunEnvironment) {
    when (runEnvironment) {
      RunEnvironment.DEV -> {
        API_URL = AppConfig.DEV_DOMAIN
        IS_ENCRYPT = false
        IS_ENCRYPT_DEBUG_KEY = true
        IS_UMENG_RELEASE = false
        IS_UPGRADE_ONLINE = false
        TOWER_API_ENV = 0
        XINSIGHT_ENV = 0
      }
      RunEnvironment.TEST -> {
        API_URL = AppConfig.TEST_DOMAIN
        IS_ENCRYPT = true
        IS_ENCRYPT_DEBUG_KEY = true
        IS_UMENG_RELEASE = false
        IS_UPGRADE_ONLINE = false
        TOWER_API_ENV = 0
        XINSIGHT_ENV = 1
      }
      RunEnvironment.PROD -> {
        API_URL = AppConfig.PROD_DOMAIN
        IS_ENCRYPT = true
        IS_ENCRYPT_DEBUG_KEY = false
        IS_UMENG_RELEASE = true
        IS_UPGRADE_ONLINE = true
        TOWER_API_ENV = 2
        XINSIGHT_ENV = 3
      }
    }
  }

  /**
   * 判断当前环境
   */
  fun currentEnvironment(): RunEnvironment {
    return when (API_URL) {
      AppConfig.DEV_DOMAIN -> RunEnvironment.DEV
      AppConfig.TEST_DOMAIN -> RunEnvironment.TEST
      AppConfig.PROD_DOMAIN -> RunEnvironment.PROD
      else -> RunEnvironment.DEV
    }
  }
}
