plugins {
  id 'com.android.library'
  id 'org.jetbrains.kotlin.android'
}

def safeExtGet(prop, fallback) {
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}

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

// Apply React Native plugin for codegen when new arch is enabled
if (isNewArchitectureEnabled()) {
  apply plugin: "com.facebook.react"
}

group = 'com.bluebillywig.bbplayer'
version = '2.0.0'

android {
  namespace "com.bluebillywig.bbplayer"
  compileSdk safeExtGet('compileSdkVersion', 36)

  defaultConfig {
    minSdk safeExtGet('minSdkVersion', 24)
    targetSdk safeExtGet('targetSdkVersion', 36)
    versionCode 1
    versionName "2.0.0"
    buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
  }

  buildFeatures {
    buildConfig true
  }

  buildTypes {
    release {
      minifyEnabled false
    }
  }

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
  }

  kotlinOptions {
    jvmTarget = '17'
  }

  sourceSets {
    main {
      java.srcDirs = ['src/main/java']
      if (isNewArchitectureEnabled()) {
        // Include codegen-generated specs first (takes precedence)
        java.srcDirs += ["build/generated/source/codegen/java"]
      } else {
        java.srcDirs += ['src/paper/java']
      }
    }
  }
}

repositories {
  // Vendored native SDK binaries (shipped in npm package)
  def localRepo = file("$projectDir/repo")
  if (localRepo.exists()) {
    maven { url localRepo.toURI() }
  }
  mavenLocal()
  mavenCentral()
  google()
  // Remote BB Maven as fallback for development builds
  maven {
    url "https://maven.bluebillywig.com/releases"
  }
}


dependencies {
  // React Native
  implementation 'com.facebook.react:react-android'

  // Blue Billywig Native Player SDK
  // Pinned to the version vendored by scripts/vendor-native-sdks.sh.
  // Override at build time: ./gradlew -PbbNativeSdkVersion=X.Y.Z assembleRelease
  // Customers can also override using resolutionStrategy in their app's build.gradle
  def bbSdkVersion = project.hasProperty('bbNativeSdkVersion')
    ? project.property('bbNativeSdkVersion')
    : '8.54.0'
  implementation "com.bluebillywig.bbnativeplayersdk:bbnativeplayersdk:${bbSdkVersion}"

  // AndroidX MediaRouter for Chromecast support
  implementation 'androidx.mediarouter:mediarouter:1.7.0'
}
