plugins {
    kotlinAndroid
    androidApplication
    jetbrainsKotlinSerialization version Version.Kotlin.language
    kotlinAnnotationProcessor
    id("com.google.dagger.hilt.android").version("2.51.1")
}
configurations.all {
    resolutionStrategy {
        force("org.hamcrest:hamcrest-junit:2.0.0.0")
    }
}

val packageName = "ru.myitschool.work"

android {
    namespace = packageName
    compileSdk = Version.Android.Sdk.compile

    defaultConfig {
        applicationId = packageName
        minSdk = Version.Android.Sdk.min
        targetSdk = Version.Android.Sdk.target
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildFeatures.viewBinding = true

    compileOptions {
        sourceCompatibility = Version.Kotlin.javaSource
        targetCompatibility = Version.Kotlin.javaSource
    }

    testOptions {
        unitTests {
            isIncludeAndroidResources = true
        }
    }

    kotlinOptions {
        jvmTarget = Version.Kotlin.jvmTarget
    }
}

dependencies {

    val fragmentVersion = "1.8.6"
    debugImplementation("androidx.fragment:fragment-testing-manifest:$fragmentVersion")
    androidTestImplementation("androidx.fragment:fragment-testing:$fragmentVersion")

    androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
    androidTestImplementation("androidx.test:runner:1.6.2")
    androidTestImplementation("androidx.test:rules:1.6.1")

    testImplementation("androidx.test:core:1.6.1")

    testImplementation("junit:junit:4.13.2")
    testImplementation("org.robolectric:robolectric:4.14")

    defaultLibrary()

    testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0")

    implementation("androidx.paging:paging-runtime:3.3.6")
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")

    val ktorClientCore = "3.0.3"
    implementation("io.ktor:ktor-client-cio:${ktorClientCore}")
    implementation("io.ktor:ktor-client-content-negotiation:${ktorClientCore}")
    implementation("io.ktor:ktor-client-core:${ktorClientCore}")
    implementation("io.ktor:ktor-client-logging:${ktorClientCore}")
    implementation("io.ktor:ktor-serialization-kotlinx-json:${ktorClientCore}")

    implementation(Dependencies.AndroidX.activity)
    implementation(Dependencies.AndroidX.fragment)
    implementation(Dependencies.AndroidX.constraintLayout)

    implementation(Dependencies.AndroidX.Navigation.fragment)
    implementation(Dependencies.AndroidX.Navigation.navigationUi)

    implementation("com.squareup.picasso:picasso:2.8")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
    implementation("androidx.datastore:datastore-preferences:1.1.2")
    implementation("com.google.mlkit:barcode-scanning:17.3.0")

    val cameraX = "1.3.4"
    implementation("androidx.camera:camera-core:$cameraX")
    implementation("androidx.camera:camera-camera2:$cameraX")
    implementation("androidx.camera:camera-lifecycle:$cameraX")
    implementation("androidx.camera:camera-view:$cameraX")
    implementation("androidx.camera:camera-mlkit-vision:1.4.0-rc04")

    val hilt = "2.51.1"
    implementation("com.google.dagger:hilt-android:$hilt")
    kapt("com.google.dagger:hilt-android-compiler:$hilt")
}

kapt {
    correctErrorTypes = true
}