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.3.2"
  implementation "androidx.appcompat:appcompat:1.2.0"
  implementation "androidx.recyclerview:recyclerview:1.2.0"
  implementation "androidx.paging:paging-runtime-ktx:3.0.0-beta03"
  implementation "androidx.cardview:cardview:1.0.0"
  implementation 'androidx.core:core-ktx:1.3.2'
  implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
  implementation "androidx.browser:browser:1.3.0"
  implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
  kapt "androidx.lifecycle:lifecycle-common-java8:2.3.1"
  implementation "com.google.android.material:material:1.3.0"

  implementation 'com.airbnb.android:epoxy:4.4.4'
  kapt 'com.airbnb.android:epoxy-processor:4.4.4'
  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.3'
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3'
  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.1'
  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.2'

  testImplementation 'junit:junit:4.13.2'

  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.1'
  androidTestImplementation 'io.jsonwebtoken:jjwt:0.9.0'
  androidTestImplementation "org.mockito:mockito-android:2.28.2"
  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
}
