import java.time.Instant

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
    id 'kotlin-kapt'
}

android {
    compileSdk 31

    defaultConfig {
        applicationId 'com.github.libretube'
        minSdk 21
        targetSdk 31
        versionCode 16
        versionName '0.4.2'
        multiDexEnabled true
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
        resValue "string", "app_name", "LibreTube"
    }

    buildFeatures {
        viewBinding true
    }

    applicationVariants.all { variant ->
        // use the date as version for debug builds
        if (variant.name == 'debug') {
            variant.outputs.each { output ->
                output.versionCodeOverride = getUnixTime()
                output.versionNameOverride = getUnixTime()
            }
        }
    }

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

        debug {
            debuggable true
            applicationIdSuffix ".debug"
            resValue "string", "app_name", "LibreTube Debug"
        }
    }
    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    splits {
        abi {
            enable true
            reset()
            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
            universalApk false

        }
    }
    packagingOptions {
        jniLibs {
            excludes += ['lib/armeabi-v7a/*_neon.so']
        }
    }
    namespace 'com.github.libretube'
}

dependencies {
    //debugImplementation libs.square.leakcanary

    kapt libs.room.compiler

    implementation libs.androidx.appcompat
    implementation libs.androidx.constraintlayout
    implementation libs.androidx.legacySupport
    implementation libs.androidx.multidex
    implementation libs.androidx.navigation.fragment
    implementation libs.androidx.navigation.ui
    implementation libs.androidx.preference
    implementation libs.androidx.work.runtime

    androidTestImplementation libs.androidx.test.junit
    androidTestImplementation libs.androidx.test.espressoCore

    implementation libs.circleimageview

    implementation libs.material
    implementation libs.exoplayer
    implementation(libs.exoplayer.extension.cronet) { exclude group: 'com.google.android.gms' }
    implementation libs.exoplayer.extension.mediasession

    implementation libs.square.retrofit
    implementation libs.square.retrofit.converterJackson
    // Do not update jackson annotations! It does not supports < API 26.
    implementation libs.jacksonAnnotations

    coreLibraryDesugaring libs.desugaring
    implementation libs.cronet.embedded
    implementation libs.cronet.okhttp
    implementation libs.coil

    implementation libs.lifecycle.viewmodel
    implementation libs.lifecycle.runtime
    implementation libs.lifecycle.livedata

    implementation libs.room
}

static def getUnixTime() {
    return Instant.now().getEpochSecond()
}