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

android {
  compileSdk 31
  defaultConfig {
    applicationId "com.airbnb.lottie.snapshots"
    minSdk 21
    targetSdk 30
    versionCode 1
    versionName VERSION_NAME
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    buildConfigField("String", "GIT_BRANCH", "\"" + System.getenv("GITHUB_REF_NAME") + "\"")
    buildConfigField("String", "GIT_SHA", "\"" + System.getenv("GITHUB_SHA") + "\"")
  }

  buildTypes {
    debug {
      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 {
      minifyEnabled false
    }
  }

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

  kotlinOptions {
    jvmTarget = JavaVersion.VERSION_1_8.toString()
    freeCompilerArgs += [
        "-Xallow-jvm-ir-dependencies",
        "-Xskip-prerelease-check",
        "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
        "-Xopt-in=kotlin.RequiresOptIn",
    ]
  }
  buildFeatures {
    compose true
    viewBinding true
  }

  composeOptions {
    kotlinCompilerExtensionVersion composeVersion
  }
}

kapt {
  correctErrorTypes = true
}

dependencies {
  implementation project(':lottie-compose')
  implementation "androidx.core:core-ktx:$coreVersion"
  implementation "androidx.activity:activity-compose:$activityVersion"
  implementation 'androidx.appcompat:appcompat:1.4.0-beta01'
  implementation "androidx.compose.ui:ui:$composeVersion"
  implementation "androidx.compose.ui:ui-tooling:$composeVersion"
  implementation "androidx.compose.material:material:$composeVersion"

  implementation 'com.squareup.okhttp3:okhttp:4.9.1'

  androidTestImplementation "com.amazonaws:aws-android-sdk-s3:$awsVersion"
  androidTestImplementation("com.amazonaws:aws-android-sdk-mobile-client:$awsVersion") { transitive = true }
  androidTestImplementation("com.amazonaws:aws-android-sdk-auth-userpools:$awsVersion") { transitive = true }

  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"
}
