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["GetDeviceLocale_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 reactNativeArchitectures() {
	def value = rootProject.getProperties().get("reactNativeArchitectures")
	return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}

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 getExtOrDefault(name) {
	return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["GetDeviceLocale_" + name]
}

def getExtOrIntegerDefault(name) {
	return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["GetDeviceLocale_" + name]).toInteger()
}

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 "com.getdevicelocale"

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

	compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")

	defaultConfig {
		minSdkVersion getExtOrIntegerDefault("minSdkVersion")
		targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
		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",
					"generated/java",
					"generated/jni"
				]
			} else {
				java.srcDirs += ["src/oldarch"]
			}
		}
	}
}

repositories {
	mavenCentral()
	google()
}

def kotlin_version = getExtOrDefault("kotlinVersion")

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:$kotlin_version"
}

if (isNewArchitectureEnabled()) {
	react {
		jsRootDir = file("../src/")
		libraryName = "GetDeviceLocale"
		codegenJavaPackageName = "com.getdevicelocale"
	}
}
