apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-parcelize'


tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
  kotlinOptions {
    freeCompilerArgs += ["-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi"]
  }
}

android {
  compileSdkVersion 30
  defaultConfig {
    applicationId "com.airbnb.lottie"
    minSdkVersion 16
    targetSdkVersion 30
    versionCode 69
    versionName VERSION_NAME
    multiDexEnabled true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    buildConfigField("String", "BITRISE_GIT_BRANCH", "\"" + System.getenv("BITRISE_GIT_BRANCH") + "\"")
    buildConfigField("String", "GIT_SHA", "\"" + gitSha + "\"")
    buildConfigField("String", "GIT_BRANCH", "\"" + gitBranch + "\"")
    vectorDrawables.useSupportLibrary = true
  }
  buildFeatures {
    viewBinding true
  }
  buildTypes {
    debug {
      multiDexKeepProguard file('proguard-multidex-rules.pro')
      buildConfigField("String", "S3AccessKey", "\"" + System.getenv("LOTTIE_S3_API_KEY") + "\"")
      buildConfigField("String", "S3SecretKey", "\"" + System.getenv("LOTTIE_S3_SECRET_KEY") + "\"")
      buildConfigField("String", "HappoApiKey", "\"" + System.getenv("LOTTIE_HAPPO_API_KEY") + "\"")
      buildConfigField("String", "HappoSecretKey", "\"" + System.getenv("LOTTIE_HAPPO_SECRET_KEY") + "\"")
    }
    release {
      multiDexKeepProguard file('proguard-multidex-rules.pro')
      minifyEnabled false
    }
  }
  lintOptions {
    ignore 'InvalidPackage'
    ignore 'VectorDrawableCompat'
    textReport true
    textOutput 'stdout'
    baseline file("lint-baseline.xml")
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  kotlinOptions {
    jvmTarget = "1.8"
  }
  sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
  }
  packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
  }
}

dependencies {
  implementation project(':lottie')
  implementation 'androidx.multidex:multidex:2.0.1'

  implementation "androidx.fragment:fragment-ktx:1.2.5"
  implementation "androidx.appcompat:appcompat:1.2.0"
  implementation "androidx.recyclerview:recyclerview:1.1.0"
  implementation "androidx.paging:paging-runtime:3.0.0-alpha5"
  implementation "androidx.paging:paging-runtime-ktx:3.0.0-alpha06"
  implementation "androidx.cardview:cardview:1.0.0"
  implementation 'androidx.core:core-ktx:1.3.1'
  implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
  implementation "androidx.browser:browser:1.2.0"
  implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
  kapt "androidx.lifecycle:lifecycle-common-java8:2.2.0"
  implementation "com.google.android.material:material:1.2.1"

  implementation 'com.airbnb.android:epoxy:4.2.0'
  kapt 'com.airbnb.android:epoxy-processor:4.2.0'
  implementation 'com.airbnb.android:mvrx:1.5.1'

  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
  implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2'
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.2'
  implementation 'com.matthew-tamlin:sliding-intro-screen:3.2.0'
  implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
  implementation 'com.github.PhilJay:MPAndroidChart:3.1.0'
  implementation 'com.amazonaws:aws-android-sdk-s3:2.8.3'
  implementation ('com.amazonaws:aws-android-sdk-mobile-client:2.8.3@aar') { transitive = true }
  implementation ('com.amazonaws:aws-android-sdk-auth-userpools:2.8.3@aar') { transitive = true }
  implementation 'com.google.code.gson:gson:2.8.6'
  implementation 'com.squareup.okhttp3:okhttp:4.9.0'
  implementation 'com.squareup.retrofit2:retrofit:2.9.0'
  implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
  implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
  implementation 'com.github.bumptech.glide:glide:4.9.0'

  debugImplementation("androidx.fragment:fragment-testing:1.3.0-alpha08")

  testImplementation 'junit:junit:4.13.1'

  androidTestImplementation 'androidx.test:core:1.3.0-rc01'
  androidTestImplementation 'androidx.test.ext:junit:1.1.2'
  androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
  androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.3.0'
  androidTestImplementation 'androidx.test:rules:1.3.0'
  androidTestImplementation 'com.squareup.okhttp3:okhttp:4.9.0'
  androidTestImplementation 'io.jsonwebtoken:jjwt:0.9.0'
  androidTestImplementation "org.mockito:mockito-android:2.28.2"
  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
}
