apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: "androidx.navigation.safeargs.kotlin"
apply from: "../gradle_scripts/code_quality.gradle"

android {
    compileSdkVersion versions.compileSdk

    defaultConfig {
        applicationId "org.moire.ultrasonic"
        versionCode 104
        versionName "4.0.0"

        minSdkVersion versions.minSdk
        targetSdkVersion versions.targetSdk
        resConfigs 'cs', 'de', 'en', 'es', 'fr', 'hu', 'it', 'nl', 'pl', 'pt', 'pt-rBR', 'ru', 'zh-rCN', 'zh-rTW'
    }

    bundle.language.enableSplit = false

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'minify/proguard-main.pro',
                    'minify/proguard-okhttp.pro',
                    'minify/proguard-retrofit.pro',
                    'minify/proguard-jackson.pro',
                    'minify/proguard-kotlin-reflect.pro',
                    'minify/proguard-kotlin.pro'
        }
        debug {
            minifyEnabled false
            multiDexEnabled true
            testCoverageEnabled true
            applicationIdSuffix ".debug"
        }
    }

    sourceSets {
        main.java.srcDirs += "${projectDir}/src/main/kotlin"
        test.java.srcDirs += "${projectDir}/src/test/kotlin"
    }

    packagingOptions {
        resources {
            excludes += ['META-INF/LICENSE']
        }
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }

    buildFeatures {
        viewBinding true
        dataBinding true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kapt {
        arguments {
            arg("room.schemaLocation", "$rootDir/ultrasonic/schemas".toString())
        }
    }

    lint {
        baseline = file("lint-baseline.xml")
        abortOnError true
        warningsAsErrors true
        disable 'IconMissingDensityFolder', 'VectorPath'
        ignore 'MissingTranslation', 'UnusedQuantity', 'MissingQuantity'
        warning 'ImpliedQuantity'
        disable 'ObsoleteLintCustomCheck'
    }

}

tasks.withType(Test) {
    useJUnitPlatform()
}

dependencies {
    implementation project(':core:domain')
    implementation project(':core:subsonic-api')

    api(libs.picasso) {
        exclude group: "com.android.support"
    }

    implementation libs.core
    implementation libs.support
    implementation libs.design
    implementation libs.multidex
    implementation libs.roomRuntime
    implementation libs.roomKtx
    implementation libs.viewModelKtx
    implementation libs.constraintLayout
    implementation libs.preferences
    implementation libs.media
    implementation libs.media3exoplayer
    implementation libs.media3session
    implementation libs.media3okhttp

    implementation libs.navigationFragment
    implementation libs.navigationUi
    implementation libs.navigationFragmentKtx
    implementation libs.navigationUiKtx
    implementation libs.navigationFeature

    implementation libs.kotlinStdlib
    implementation libs.kotlinxCoroutines
    implementation libs.kotlinxGuava
    implementation libs.koinAndroid
    implementation libs.okhttpLogging
    implementation libs.fastScroll
    implementation libs.colorPickerView
    implementation libs.rxJava
    implementation libs.rxAndroid
    implementation libs.multiType

    kapt libs.room

    testImplementation libs.kotlinReflect
    testImplementation libs.junit
    testRuntimeOnly libs.junitVintage
    testImplementation libs.kotlinJunit
    testImplementation libs.kluent
    testImplementation libs.mockito
    testImplementation libs.mockitoInline
    testImplementation libs.mockitoKotlin
    testImplementation libs.robolectric

    implementation libs.timber

}

