
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'maven-publish'

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

if (isNewArchitectureEnabled()) {
    apply plugin: 'com.facebook.react'
    react {
        jsRootDir = file("../src/specs")
        libraryName = "MobileMessaging"
        codegenJavaPackageName = "org.infobip.reactlibrary.mobilemessaging"
    }
}

buildscript {
    ext {
        kotlin_version = '2.1.20'
    }
    repositories {
        google()
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.11.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25"
    }
}

def overrideGmsVersion = rootProject.findProperty('overrideGmsVersion') ?: ''
def overrideFirebaseVersion = rootProject.findProperty('overrideFirebaseVersion') ?: ''
def withWebRTCUI = rootProject.findProperty('withWebRTCUI') ?: false

android {
    namespace "org.infobip.reactlibrary.mobilemessaging"
    compileSdk 36

    defaultConfig {
        minSdk 21
        targetSdk 36
        buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
        consumerProguardFiles 'infobip-mm-proguard-rules.pro'
    }

    sourceSets {
        main {
            if (isNewArchitectureEnabled()) {
                java.srcDirs += ["src/newarchitecture"]
            } else {
                java.srcDirs += ["src/oldarchitecture"]
            }
        }
    }
}

repositories {
    maven { url "$rootDir/../node_modules/react-native/android" }
    maven { url "$rootDir/../node_modules/jsc-android/dist" }
    google()
    mavenCentral()
    mavenLocal()
}

dependencies {
    def mmVersion = '14.14.2'
    implementation "org.jetbrains.kotlin:kotlin-stdlib:2.1.20"
    compileOnly "com.facebook.react:react-android"
    implementation "androidx.annotation:annotation:1.9.1"

    implementation 'com.google.android.material:material:1.12.0'
    implementation 'androidx.exifinterface:exifinterface:1.4.1'
    implementation 'androidx.databinding:viewbinding:8.13.0'
    implementation 'com.google.android.gms:play-services-base:18.7.2'

    implementation "com.infobip:infobip-mobile-messaging-android-resources:$mmVersion@aar"
    implementation "com.infobip:infobip-mobile-messaging-android-chat-sdk:$mmVersion@aar"
    implementation "com.infobip:infobip-mobile-messaging-android-inbox-sdk:$mmVersion@aar"
    implementation("com.infobip:infobip-mobile-messaging-android-sdk:$mmVersion@aar") {
        transitive = true;

        if (!overrideGmsVersion.empty) {
            exclude group: 'com.google.android.gms', module: 'play-services-location'
        }
        if (!overrideFirebaseVersion.empty) {
            exclude group: 'com.google.firebase', module: 'firebase-messaging'
        }
    }
    if (withWebRTCUI.toBoolean()) {
        implementation implementation("com.infobip:infobip-rtc-ui:$mmVersion") {
            transitive = true
        }
    }
    if (!overrideGmsVersion.empty) {
        implementation "com.google.android.gms:play-services-location:$overrideGmsVersion"
    }
    if (!overrideFirebaseVersion.empty) {
        implementation "com.google.firebase:firebase-messaging:$overrideFirebaseVersion"
    }
}
