import com.moengage.gradle.android.library.plugin.configs.BuildConfigType
import groovy.json.JsonSlurper

ext {
    kotlinVersion = "1.9.23"
}

buildscript {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:8.13.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
        classpath "com.moengage.android.hybrid.module.config.plugin:com.moengage.android.hybrid.module.config.plugin.gradle.plugin:0.0.4"
    }
}

apply plugin: 'com.moengage.android.hybrid.module.config.plugin'
apply plugin: 'com.facebook.react'

hybridModuleConfig.configurePlugin {
    kotlinOptions {
        enableJvmTarget = false
        compilerArgs = ['-Xjvm-default=all']
    }
    buildFeature {
        buildConfigField(
            BuildConfigType.BOOLEAN,
           "IS_NEW_ARCHITECTURE_ENABLED",
            isNewArchitectureEnabled().toString()
        )
        buildConfigField(
            BuildConfigType.STRING,
            "MOENGAGE_REACT_LIBRARY_VERSION",
            "\"${getCorePluginVersion().toString()}\""
        )
    }
}

android {
  namespace "com.moengage.react"
  sourceSets {
    main {
      if (isNewArchitectureEnabled()) {
        java.srcDirs += ['src/newarch']
      } else {
        java.srcDirs += ['src/oldarch']
      }
    }
  }
}

dependencies {
  implementation fileTree(include: ['*.jar'], dir: 'libs')

  compileOnly('com.facebook.react:react-native')
  compileOnly("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
}

apply from: file("./moengage-dependency-helper.gradle")

def isNewArchitectureEnabled() {
  return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}

def getCorePluginVersion() {
    String libraryVersionName = "UNKNOWN"
    File packageJson = new File(project.projectDir.parentFile, "package.json")

    if (packageJson.exists()) {
        def parsedJson = new JsonSlurper().parseText(packageJson.text)
        libraryVersionName = parsedJson.version
    }

    return libraryVersionName
}