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

version wireguardVersionName
group groupName

// Create a variable called keystorePropertiesFile, and initialize it to your
// keystore.properties file, in the rootProject folder.
final def keystorePropertiesFile = rootProject.file("keystore.properties")

android {
    buildToolsVersion '29.0.3'
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = '1.8'
        }
    }
    compileSdkVersion 29
    dataBinding.enabled true
    viewBinding.enabled true
    defaultConfig {
        applicationId 'com.getbubblenow.android'
        minSdkVersion 21
        targetSdkVersion 29
        versionCode wireguardVersionCode
        versionName wireguardVersionName
        buildConfigField 'int', 'MIN_SDK_VERSION', "$minSdkVersion.apiLevel"
    }
    // If the keystore file exists
    if (keystorePropertiesFile.exists()) {
        // Initialize a new Properties() object called keystoreProperties.
        final def keystoreProperties = new Properties()

        // Load your keystore.properties file into the keystoreProperties object.
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

        signingConfigs {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile rootProject.file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
    }
    buildTypes {
        release {
            if (keystorePropertiesFile.exists()) signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles "proguard-android-optimize.txt", "proguard-rules.pro"
        }
        debug {
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
        }
    }
    lintOptions {
        disable('LongLogTag')
    }
}

dependencies {
    implementation "com.wireguard.android:tunnel:$tunnelVersion"
    implementation "androidx.annotation:annotation:$annotationsVersion"
    implementation "androidx.appcompat:appcompat:$appcompatVersion"
    implementation "androidx.constraintlayout:constraintlayout:$constraintLayoutVersion"
    implementation "androidx.coordinatorlayout:coordinatorlayout:$coordinatorLayoutVersion"
    implementation "androidx.biometric:biometric:$biometricVersion"
    implementation "androidx.core:core-ktx:$coreKtxVersion"
    implementation "androidx.databinding:databinding-runtime:$agpVersion"
    implementation "androidx.fragment:fragment:$fragmentVersion"
    implementation "androidx.preference:preference:$preferenceVersion"
    implementation "com.google.android.material:material:$materialComponentsVersion"
    implementation "com.journeyapps:zxing-android-embedded:$zxingEmbeddedVersion"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
    implementation "net.sourceforge.streamsupport:android-retrofuture:$streamsupportVersion"
    //Add for API Calls
    implementation "com.squareup.okhttp3:logging-interceptor:$interceptorVersion"
    implementation "com.google.code.gson:gson:$gsonVersion"
    implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
    implementation "com.squareup.retrofit2:converter-gson:$converterGsonVersion"
    implementation "androidx.appcompat:appcompat:$appcompatVersion"
    implementation "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion"
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleExtensionVersion"
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycleViewModelVersion"
    //RxJava
    implementation "io.reactivex.rxjava2:rxandroid:$rxandroidVersion"
    implementation "io.reactivex.rxjava2:rxjava:$rxjavaVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$adapterrxjava2Version"
}

tasks.withType(JavaCompile) {
    options.compilerArgs << '-Xlint:unchecked'
    options.deprecation = true
}
