apply from: file('./../../core/android/package-json.gradle')
def Versions = project.ext.RNCKakaoSdkVersions
Project coreProject = project.ext.getWorkspaceProject("core")
Project socialProject = project.ext.getWorkspaceProject("social")

buildscript {
    // Buildscript is evaluated before everything else so we can't use getExtOrDefault
    def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Kakao_kotlinVersion"]

    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:7.2.1"
        // noinspection DifferentKotlinGradleVersion
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

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

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

if (isNewArchitectureEnabled()) {
    apply plugin: "com.facebook.react"
}

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
    return (major == 7 && minor >= 3) || major >= 8
}

android {
    if (supportsNamespace()) {
        namespace "net.mjstudio.rnkakao.share"

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

    compileSdkVersion Versions.compileSdk

    defaultConfig {
        minSdkVersion Versions.minSdk
        targetSdkVersion Versions.targetSdk
        buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
    }

    buildFeatures {
        buildConfig true
    }

    buildTypes {
        release {
            minifyEnabled false
        }
    }

    lintOptions {
        disable "GradleCompatible"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }


    sourceSets {
        main {
            if (isNewArchitectureEnabled()) {
                java.srcDirs += [
                        "src/newarch",
                        // This is needed to build Kotlin project with NewArch enabled
                        "${project.buildDir}/generated/source/codegen/java"
                ]
            } else {
                java.srcDirs += ["src/oldarch"]
            }
        }
    }
}

repositories {
    mavenCentral()
    google()
}

dependencies {
    // For < 0.71, this will be from the local maven repo
    // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
    //noinspection GradleDynamicVersion
    implementation "com.facebook.react:react-native:+"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}"

    api coreProject
    api socialProject
    implementation "com.kakao.sdk:v2-share:${Versions.share}"
}

if (isNewArchitectureEnabled()) {
    react {
        jsRootDir = file("../src/")
        libraryName = "RNCKakaoShare"
        codegenJavaPackageName = "net.mjstudio.rnkakao.share"
    }
}