apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

kapt {
    correctErrorTypes = true
    useBuildCache = true
    mapDiagnosticLocations = true
    javacOptions {
        option("-Xmaxerrs", 1000)
    }
}

android {
    defaultConfig {
        applicationId 'com.topjohnwu.magisk'
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
        versionName props['appVersion']
        versionCode props['appVersionCode'] as Integer
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
                    'proguard-rules.pro', 'proguard-kotlin.pro'
        }
    }

    dataBinding {
        enabled = true
    }

    packagingOptions {
        exclude '/META-INF/*.version'
        exclude '/META-INF/*.kotlin_module'
        exclude '/META-INF/rxkotlin.properties'
        exclude '/androidsupportmultidexversion.txt'
        exclude '/org/bouncycastle/**'
        exclude '/kotlin/**'
        exclude '/kotlinx/**'
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }
}

androidExtensions {
    experimental = true
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(':shared')
    implementation project(':signing')

    implementation 'com.github.topjohnwu:jtar:1.0.0'
    implementation 'com.jakewharton.timber:timber:4.7.1'
    implementation 'com.ncapdevi:frag-nav:3.2.0'
    implementation 'com.github.pwittchen:reactivenetwork-rx2:3.0.6'

    implementation 'io.reactivex.rxjava2:rxjava:2.2.13'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'

    implementation "org.jetbrains.kotlin:kotlin-stdlib:${vKotlin}"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${vKotlin}"

    def vBAdapt = '3.1.1'
    def bindingAdapter = 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter'
    implementation "${bindingAdapter}:${vBAdapt}"
    implementation "${bindingAdapter}-recyclerview:${vBAdapt}"

    def vMarkwon = '4.1.2'
    implementation "io.noties.markwon:core:${vMarkwon}"
    implementation "io.noties.markwon:html:${vMarkwon}"
    implementation "io.noties.markwon:image:${vMarkwon}"
    implementation 'com.caverock:androidsvg:1.4'

    def vLibsu = '2.5.1'
    implementation "com.github.topjohnwu.libsu:core:${vLibsu}"
    implementation "com.github.topjohnwu.libsu:io:${vLibsu}"

    def vKoin = "2.0.1"
    implementation "org.koin:koin-core:${vKoin}"
    implementation "org.koin:koin-android:${vKoin}"
    implementation "org.koin:koin-androidx-viewmodel:${vKoin}"

    def vRetrofit = '2.6.2'
    implementation "com.squareup.retrofit2:retrofit:${vRetrofit}"
    implementation "com.squareup.retrofit2:converter-moshi:${vRetrofit}"
    implementation "com.squareup.retrofit2:converter-scalars:${vRetrofit}"
    implementation "com.squareup.retrofit2:adapter-rxjava2:${vRetrofit}"

    def vOkHttp = '3.12.6'
    implementation "com.squareup.okhttp3:okhttp:${vOkHttp}"
    implementation "com.squareup.okhttp3:logging-interceptor:${vOkHttp}"

    def vMoshi = "1.8.0"
    implementation "com.squareup.moshi:moshi:${vMoshi}"

    def vKotshi = "2.0.1"
    implementation "se.ansman.kotshi:api:${vKotshi}"
    kapt "se.ansman.kotshi:compiler:${vKotshi}"

    modules {
        module('androidx.room:room-runtime') {
            replacedBy('com.github.topjohnwu:room-runtime')
        }
    }
    def vRoom = "2.2.1"
    implementation "com.github.topjohnwu:room-runtime:${vRoom}"
    kapt "androidx.room:room-compiler:${vRoom}"

    def vNav = "2.1.0"
    implementation "androidx.navigation:navigation-fragment-ktx:$vNav"
    implementation "androidx.navigation:navigation-ui-ktx:$vNav"

    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha03'
    implementation 'androidx.preference:preference:1.1.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-rc01'
    implementation 'androidx.fragment:fragment-ktx:1.2.0-rc01'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.work:work-runtime:2.2.0'
    implementation 'androidx.transition:transition:1.3.0-rc01'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'androidx.core:core-ktx:1.1.0'
    implementation 'com.google.android.material:material:1.2.0-alpha01'
}