plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("org.jetbrains.kotlin.plugin.compose")
    id("org.jetbrains.kotlin.plugin.serialization")
}

android {
    namespace = "com.tsmobile.app"
    compileSdk = 35

    defaultConfig {
        applicationId = "com.tsmobile.app"
        minSdk = 26
        targetSdk = 35
        versionCode = 8
        versionName = "1.0.8"
    }

    signingConfigs {
        create("release") {
            // The release keystore is kept at the repository root by default.
            // Gradle properties can still override this path for CI or local setups.
            val defaultStoreFile = rootProject.projectDir.parentFile
                .resolve("keystore/tsmobile-release.jks")

            storeFile = defaultStoreFile
            storePassword = providers.gradleProperty("TSMOBILE_STORE_PASSWORD").orNull
            keyAlias = providers.gradleProperty("TSMOBILE_KEY_ALIAS")
                .orElse("tsmobile-release")
                .get()
            keyPassword = providers.gradleProperty("TSMOBILE_KEY_PASSWORD").orNull
        }
    }

    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            signingConfig = signingConfigs.getByName("release")
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = "17"
    }

    buildFeatures {
        compose = true
    }

    // 引入 gomobile 生成的 AAR
    // 将 Go 编译产物放到 app/libs/ 目录下
    // 文件名: teamspeak.aar
}

dependencies {
    // Compose BOM
    val composeBom = platform("androidx.compose:compose-bom:2024.12.01")
    implementation(composeBom)

    // Compose UI
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-graphics")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3")
    implementation("androidx.compose.material:material-icons-extended")

    // Activity & Navigation
    implementation("androidx.activity:activity-compose:1.9.3")
    implementation("androidx.navigation:navigation-compose:2.8.5")

    // Lifecycle & ViewModel
    implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7")
    implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7")
    implementation("androidx.lifecycle:lifecycle-service:2.8.7")
    implementation("androidx.lifecycle:lifecycle-process:2.8.7")

    // DataStore (替代 localStorage)
    implementation("androidx.datastore:datastore-preferences:1.1.1")

    // Coroutines
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")

    // JSON 序列化
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")

    // HTTP client (更新检测)
    implementation("com.squareup.okhttp3:okhttp:4.12.0")

    // Coil 图片加载（Compose）
    implementation("io.coil-kt.coil3:coil-compose:3.0.4")

    // gomobile AAR — 放到 app/libs/teamspeak.aar
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))

    // Tests
    testImplementation("junit:junit:4.13.2")

    // Debug
    debugImplementation("androidx.compose.ui:ui-tooling")
}
