// note: had to abandon the 'plugins' syntax because the navigation graph editor appears to have a bug where it adds kotlin-android and kotlin-android extensions "automatically" when it doesn't detect them. This would constantly break the build. TODO: file a bug on this at b.android.com
//       the main side effect is that plugins have to include their classpath in the parent script, rather than just specifying the 'version' in the plugins dsl
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'deploygate'
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion buildConfig.compileSdkVersion
    defaultConfig {
        applicationId "cash.z.android.wallet"
        minSdkVersion buildConfig.minSdkVersion
        targetSdkVersion buildConfig.targetSdkVersion
        versionCode 17 // todo: change this to 1_00_04 format, once we graduate beyond zero for the major version number because leading zeros indicate on octal number.
        versionName "0.3.5-alpha"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }

    dataBinding {
        enabled true
    }

    flavorDimensions 'network'
    productFlavors {
        // product flavor names cannot start with the word "test" because they would clash with other targets
        ztestnet {
            dimension 'network'
            applicationId 'cash.z.android.wallet.testnet'
            matchingFallbacks = ['debug']
        }

        zmainnet {
            dimension 'network'
            applicationId 'cash.z.android.wallet.mainnet'
            matchingFallbacks = ['release']
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        mock {
            initWith debug
            matchingFallbacks = ['debug', 'release']
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    lintOptions {
        lintConfig file("zcash-lint-options.xml")
    }
}

dependencies {

    // Android
    implementation deps.androidx.appcompat
    implementation deps.androidx.constraintLayout
    implementation deps.androidx.core
    implementation deps.androidx.coreKtx
    implementation deps.androidx.navigation.fragment
    implementation deps.androidx.navigation.fragmentKtx
    implementation deps.androidx.navigation.ui
    implementation deps.androidx.navigation.uiKtx
    implementation deps.material
    implementation deps.androidx.multidex

    // Kotlin
    implementation deps.kotlin.stdlib
    implementation deps.kotlin.reflect
    implementation deps.kotlin.coroutines.core
    implementation deps.kotlin.coroutines.android

    // Zcash
    implementation deps.zcash.walletSdk
    implementation project(path: ':qrecycler')

    // TODO: get the AAR to provide these
    implementation "io.grpc:grpc-okhttp:1.17.1"
    implementation "io.grpc:grpc-protobuf-lite:1.17.1"
    implementation "io.grpc:grpc-stub:1.17.1"
    implementation 'javax.annotation:javax.annotation-api:1.2'
    implementation "androidx.room:room-runtime:2.0.0"
    implementation "androidx.room:room-common:2.0.0"
    kapt "androidx.room:room-compiler:2.0.0"

    // Dagger
    implementation deps.dagger.android.support
    kapt deps.dagger.android.processor
    kapt deps.dagger.compiler

    // Other
    implementation deps.speeddial
    implementation deps.lottie
    debugImplementation deps.stetho
    mockImplementation deps.stetho

    testImplementation 'org.mockito:mockito-junit-jupiter:2.24.0'
    testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0'
    testImplementation "org.junit.jupiter:junit-jupiter-api:5.4.0"
    testImplementation "org.junit.jupiter:junit-jupiter-engine:5.4.0"
    testImplementation "org.junit.jupiter:junit-jupiter-migrationsupport:5.4.0"

    androidTestImplementation deps.androidx.test.runner
    androidTestImplementation deps.androidx.test.espresso

}
