buildscript {
  ext.kotlinVersion = '1.9.23'
  repositories {
    google()
    mavenCentral()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:8.7.3'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
  }
}

rootProject.allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

ext {
  //dependency version
  moengageCoreVersion = "13.06.00"
  moengageInAppVersion = "8.8.0"
  basePluginVersion = "4.3.0"
  //build versions
  minimumVersion = 21
  compileVersion = 34
}

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

android {
  compileSdk compileVersion
  namespace "com.moengage.react"
  defaultConfig {
    minSdk minimumVersion
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

    buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString())
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

  kotlinOptions {
    freeCompilerArgs = ['-Xjvm-default=all']
  }
  buildFeatures {
    buildConfig true
  }


  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")
  
  api("com.moengage:moe-android-sdk:$moengageCoreVersion")
  api("com.moengage:inapp:$moengageInAppVersion")
  api("com.moengage:plugin-base:$basePluginVersion")
}

apply from: file("./user-agent.gradle")

repositories {
  mavenCentral()
}

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