plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'org.jetbrains.kotlin.plugin.compose'
}

def googleServicesFile = file('google-services.json')
if (googleServicesFile.exists()) {
    apply plugin: 'com.google.gms.google-services'
}

// Release-подпись читается из окружения/gradle-properties (боевой keystore вне git,
// в CI — из secrets). Переменные: F7_KEYSTORE_FILE, F7_KEYSTORE_PASSWORD,
// F7_KEY_ALIAS, F7_KEY_PASSWORD (можно и как -P… gradle-property). Если не заданы —
// release подписывается debug-ключом (локальная сборка/QA работает без keystore).
def f7KeystoreFile = System.getenv('F7_KEYSTORE_FILE') ?: project.findProperty('F7_KEYSTORE_FILE')
def f7HasReleaseSigning = f7KeystoreFile != null && file(f7KeystoreFile).exists()

android {
    namespace 'ru.forbion.f7cloud.mobile'
    compileSdk 36

    signingConfigs {
        if (f7HasReleaseSigning) {
            release {
                storeFile file(f7KeystoreFile)
                storePassword System.getenv('F7_KEYSTORE_PASSWORD') ?: project.findProperty('F7_KEYSTORE_PASSWORD')
                keyAlias System.getenv('F7_KEY_ALIAS') ?: project.findProperty('F7_KEY_ALIAS')
                keyPassword System.getenv('F7_KEY_PASSWORD') ?: project.findProperty('F7_KEY_PASSWORD')
                // v2 обязателен (minSdk 26); v3 — под будущую ротацию ключа. v1 не нужен (minSdk>=24).
                enableV1Signing false
                enableV2Signing true
                enableV3Signing true
            }
        }
    }

    defaultConfig {
        applicationId 'ru.forbion.f7cloud.mobile'
        minSdk 26
        targetSdk 36
        versionCode 152
        versionName '0.5.144'
        missingDimensionStrategy 'default', 'f7'
        multiDexEnabled true

        // ABI задаём ПОБИЛДТИПОВО (ниже): release — ARM-only (компактно), debug — все ABI
        // (включая x86/x86_64), чтобы debug-сборка нативно шла на эмуляторах (BlueStacks и т.п.)
        // и на физических устройствах.
        // Оставляем только нужные локали (у vendor-форка ~48 языков) — минус несколько МБ.
        // resourceConfigurations — не-deprecated бэкинг resConfigs.
        resourceConfigurations += ['ru', 'en']

        // Дефолтный адрес сервера на экране входа. Прод-URL в сборку не вшивать
        // (решение integrator-b, f7_platform mail/035): для дев-сборки под свой
        // стенд задать -Pf7DefaultServerUrl=https://... или f7DefaultServerUrl в
        // ~/.gradle/gradle.properties. Без свойства поле входа пустое.
        buildConfigField 'String', 'DEFAULT_SERVER_URL',
            "\"${project.findProperty('f7DefaultServerUrl') ?: ''}\""
    }

    buildTypes {
        debug {
            // Все ABI — чтобы debug нативно работал на x86-эмуляторах (BlueStacks) И на ARM-девайсах.
            ndk { abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64' }
        }
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            // прод — только ARM (реальные устройства), компактно
            ndk { abiFilters 'arm64-v8a', 'armeabi-v7a' }
            // боевой keystore — если задан env/-P; иначе debug-ключ (не для распространения)
            signingConfig f7HasReleaseSigning ? signingConfigs.release : signingConfigs.debug
        }
    }

    buildFeatures {
        compose true
        buildConfig true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }

    applicationVariants.configureEach { variant ->
        variant.outputs.configureEach { output ->
            def vName = variant.versionName ?: "0.0.0"
            def vCode = variant.versionCode ?: 0
            output.outputFileName = "f7cloud-mobile-v${vName}-${vCode}-${variant.name}.apk"
        }
    }
}

dependencies {
    implementation project(':core:auth')
    implementation project(':core:network')
    implementation project(':core:push')
    implementation project(':core:designsystem')
    implementation project(':feature:files')
    implementation project(':feature:talk')
    implementation project(':feature:talk-native')
    implementation project(':feature:calendar')
    implementation project(':feature:contacts')
    implementation project(':feature:tasks')
    implementation project(':feature:deck')
    implementation project(':feature:mail')
    implementation project(':feature:f7support')

    def composeBom = platform(libs.compose.bom)
    implementation composeBom
    androidTestImplementation composeBom
    implementation libs.activity.compose
    implementation libs.compose.ui
    implementation libs.compose.ui.tooling.preview
    implementation libs.compose.material3
    implementation libs.navigation.compose
    implementation libs.lifecycle.viewmodel.compose
    implementation libs.lifecycle.runtime.compose
    implementation libs.lifecycle.process
    implementation libs.coil.compose
    implementation libs.coil.svg
    implementation platform(libs.firebase.bom)
    implementation libs.firebase.messaging
    implementation libs.coroutines.play.services
    implementation libs.multidex
    implementation libs.core.splashscreen
    implementation libs.biometric
    implementation libs.fragment.ktx
    implementation libs.camera.camera2
    implementation libs.camera.lifecycle
    implementation libs.camera.view
    implementation libs.zxing
    implementation libs.compose.material.icons.extended
    implementation libs.guava
    debugImplementation libs.compose.ui.tooling
}
