plugins {
  id 'com.android.application'
  id "kotlin-android"
  id 'kotlin-kapt'
  id 'kotlin-parcelize'
}

android {
  compileSdk 31
  defaultConfig {
    applicationId "com.airbnb.lottie"
    minSdk 16
    targetSdk 30
    versionCode 69
    versionName VERSION_NAME
    multiDexEnabled true
    buildConfigField("String", "BITRISE_GIT_BRANCH", "\"" + System.getenv("BITRISE_GIT_BRANCH") + "\"")
    buildConfigField("String", "GIT_SHA", "\"" + gitSha + "\"")
    buildConfigField("String", "GIT_BRANCH", "\"" + gitBranch + "\"")
    vectorDrawables.useSupportLibrary = true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  }
  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 = JavaVersion.VERSION_1_8.toString()
    freeCompilerArgs += ["-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi"]
  }
  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.appcompat:appcompat:$appcompatVersion"
  implementation "androidx.recyclerview:recyclerview:1.2.1"
  implementation "androidx.paging:paging-runtime-ktx:3.0.1"
  implementation "androidx.cardview:cardview:1.0.0"
  implementation "androidx.core:core-ktx:$coreVersion"
  implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
  implementation "androidx.browser:browser:1.3.0"
  implementation "com.google.android.material:material:$materialVersion"

  implementation "com.airbnb.android:epoxy:$epoxyVersion"
  kapt "com.airbnb.android:epoxy-processor:$epoxyVersion"
  implementation 'com.airbnb.android:mvrx:1.5.1'

  implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
  implementation 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2'
  implementation 'com.github.PhilJay:MPAndroidChart:3.1.0'
  implementation "com.amazonaws:aws-android-sdk-s3:$awsVersion"
  implementation("com.amazonaws:aws-android-sdk-mobile-client:$awsVersion") { transitive = true }
  implementation("com.amazonaws:aws-android-sdk-auth-userpools:$awsVersion") { transitive = true }
  implementation 'com.google.code.gson:gson:2.8.8'
  implementation 'com.squareup.okhttp3:okhttp:4.9.1'
  implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
  implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
  implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
  implementation 'com.github.bumptech.glide:glide:4.12.0'

  debugImplementation 'androidx.fragment:fragment-testing:1.3.6'

  testImplementation "junit:junit:$junitVersion"
  androidTestImplementation "androidx.test.ext:junit:$extJunitVersion"
  androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
  androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
  androidTestImplementation 'androidx.test:core:1.3.0'
  androidTestImplementation 'androidx.test:rules:1.4.0'
  androidTestImplementation 'io.jsonwebtoken:jjwt:0.9.1'
  androidTestImplementation "org.mockito:mockito-android:$mockitoVersion"
  androidTestImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
}
