buildscript {
    ext.safeExtGet = {prop, fallback ->
        rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
    }
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.3.1'
    }
}

apply plugin: 'com.android.library'

def nuiAarFile = file('libs/nuisdk-release.aar')
def nuiExtractDir = file("$buildDir/generated/nuisdk")
def nuiClassesJar = file("$nuiExtractDir/classes.jar")
def nuiJniDir = file("$nuiExtractDir/jni")

task extractNuiClasses(type: Copy) {
    from(zipTree(nuiAarFile)) {
        include 'classes.jar'
    }
    into nuiExtractDir
}

task extractNuiJni(type: Copy) {
    from(zipTree(nuiAarFile)) {
        include 'jni/**/*.so'
        eachFile { details ->
            details.path = details.path.replaceFirst(/^jni\//, '')
        }
        includeEmptyDirs = false
    }
    into nuiJniDir
}

android {
    compileSdkVersion safeExtGet('compileSdkVersion', 33)
    buildToolsVersion safeExtGet('buildToolsVersion', '33.0.0')

    defaultConfig {
        minSdkVersion safeExtGet('minSdkVersion', 21)
        targetSdkVersion safeExtGet('targetSdkVersion', 33)
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
        }
    }

    lintOptions {
        disable 'GradleCompatible'
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    sourceSets {
        main {
            jniLibs.srcDirs += [nuiJniDir]
        }
    }
}

repositories {
    google()
    mavenCentral()
}

dependencies {
    implementation 'com.facebook.react:react-native:+'

    compileOnly files(nuiClassesJar)
}

preBuild.dependsOn(extractNuiClasses, extractNuiJni)
