buildscript {
  ext.kotlinVersion = '1.3.31'
  repositories {
    google()
    jcenter()
    mavenCentral()
    maven {
      url 'https://maven.fabric.io/public'
    }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.4.2'
    classpath 'com.google.gms:google-services:4.3.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
    classpath 'com.google.firebase:perf-plugin:1.3.0'
    classpath 'io.fabric.tools:gradle:1.28.1'
  }
}

allprojects {
  task downloadDependencies() {
    description 'Download all dependencies to the Gradle cache'
    doLast {
      configurations.findAll().each { config ->
        if (config.name.contains("minReactNative") && config.canBeResolved) {
          print config.name
          print '\n'
          config.files
        }
      }
    }
  }

  println "${project.name} ${projectDir} ${rootDir}"

  repositories {
    google()
    mavenLocal()
    maven {
      // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
      url("$rootDir/../node_modules/react-native/android")
    }
    maven {
      // Android JSC is installed from npm
      url("$rootDir/../node_modules/jsc-android/dist")
    }
    maven {
      url "$rootDir/../node_modules/detox/Detox-android"
    }
    jcenter()
  }

}

subprojects {
  task listAllDependencies(type: DependencyReportTask) {}
  ext {
    compileSdk = 28
    buildTools = "28.0.3"
    minSdk = 16
    targetSdk = 28
  }

  afterEvaluate { project ->
    if (!project.name.equalsIgnoreCase("app")
      && project.hasProperty("android")) {
      android {
        compileSdkVersion compileSdk
        buildToolsVersion buildTools
        defaultConfig {
          minSdkVersion minSdk
          targetSdkVersion targetSdk
        }
        variantFilter { variant ->
          def names = variant.flavors*.name
          if (names.contains("minReactNative44")) {
            setIgnore(true)
          }
        }
      }
    }
  }
}
