buildscript {
    ext.getExtOrDefault = { name ->
        if (rootProject.ext.has(name)) {
            return rootProject.ext.get(name)
        }
        def property = project.properties['MyAppList_' + name]
        if (property != null) {
            return property
        }
        def gradleProperty = project.findProperty('MyAppList_' + name)
        if (gradleProperty != null) {
            return gradleProperty
        }
        switch (name) {
            case "kotlinVersion": return "2.0.21"
            default: return null
        }
    }

    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:8.7.2"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion') ?: '2.0.21'}"
    }
}

apply plugin: "com.android.library"
apply plugin: "kotlin-android"
apply plugin: "com.facebook.react"

// Helper Functions
def getExtOrIntegerDefault(name) {
    if (rootProject.ext.has(name)) {
        return rootProject.ext.get(name) as Integer
    }
    def property = project.properties["MyAppList_" + name]
    if (property != null) {
        return property.toInteger()
    }
    def gradleProperty = project.findProperty("MyAppList_" + name)
    if (gradleProperty != null) {
        return gradleProperty.toInteger()
    }
    return getDefaultValue(name).toInteger()
}

def getDefaultValue(name) {
    switch (name) {
        case "compileSdkVersion": return "34"
        case "minSdkVersion": return "21"
        case "targetSdkVersion": return "34"
        default: return "34"
    }
}

android {
    namespace "com.myapplist"

    def compileSdk = getExtOrIntegerDefault("compileSdkVersion")
    def minSdk = getExtOrIntegerDefault("minSdkVersion")
    def targetSdk = getExtOrIntegerDefault("targetSdkVersion")

    // Make sure these are mapped correctly
    compileSdkVersion compileSdk

    defaultConfig {
        minSdkVersion minSdk
        targetSdkVersion targetSdk
    }

    buildFeatures {
        buildConfig true
    }

    buildTypes {
        release {
            minifyEnabled false
        }
    }

    lintOptions {
        disable "GradleCompatible"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    sourceSets {
        main {
            java.srcDirs += [
                "src/main/java",
                "build/generated/source/codegen/java"
            ]
        }
    }
}

repositories {
    mavenCentral()
    google()
}

def kotlin_version = getExtOrDefault("kotlinVersion") ?: "2.0.21"

dependencies {
    implementation "com.facebook.react:react-android"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

react {
    jsRootDir = file("../src/")
    libraryName = "MyAppList"
    codegenJavaPackageName = "com.myapplist"
}
