// android/build.gradle

buildscript {
  ext.kotlin_version = "1.9.24"
  repositories {
    google()
    mavenCentral()
  }

  dependencies {
    classpath "com.android.tools.build:gradle:8.8.0"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
  }
}

apply plugin: "com.android.library"
apply plugin: "com.facebook.react"
apply plugin: "org.jetbrains.kotlin.android"

def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }

def getExtOrDefault(name) {
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["BlePlx_" + name]
}

def getExtOrIntegerDefault(name) {
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["BlePlx_" + name]).toInteger()
}

def supportsNamespace() {
  def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
  def major = parsed[0].toInteger()
  def minor = parsed[1].toInteger()

  // Namespace support was added in 7.3.0
  if (major == 7 && minor >= 3) {
    return true
  }

  return major >= 8
}

android {
  ndkVersion rootProject.ext.has("ndkVersion") ? rootProject.ext.ndkVersion : "27.1.12297006"

  if (supportsNamespace()) {
    namespace = "com.sfourdrinier.unifiedblemanager"

    sourceSets {
      main {
        manifest.srcFile "src/main/AndroidManifestNew.xml"
      }
    }
  }

  compileSdk getExtOrIntegerDefault("compileSdkVersion")

  defaultConfig {
    minSdk getExtOrIntegerDefault("minSdkVersion")
    targetSdk getExtOrIntegerDefault("targetSdkVersion")
    buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"
    buildConfigField "String", "OWNED_RADIO_ID", "\"owned-android-gatt-v1\""
    externalNativeBuild {
      cmake {
        arguments "-DANDROID_STL=c++_shared"
        cppFlags "-std=c++20"
      }
    }
  }
  buildTypes {
    release {
      minifyEnabled false
    }
  }

  buildFeatures {
    prefab = true
  }

  lint {
    disable "GradleCompatible"
  }

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
  }

  kotlinOptions {
    jvmTarget = "17"
  }
  testOptions {
    unitTests.returnDefaultValues = true
  }
  externalNativeBuild {
    cmake {
      path file("src/main/jni/CMakeLists.txt")
    }
  }
}

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation "com.facebook.react:react-android"
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
  testImplementation "junit:junit:4.13.2"
  testImplementation "org.mockito:mockito-core:5.14.2"
}

react {
  jsRootDir = file("../src/")
  libraryName = "BlePlx"
  codegenJavaPackageName = "com.sfourdrinier.unifiedblemanager"
}
