df2c61d8d7
- replace manual captcha screen with WebView-based VK captcha flow - handle captcha error 14 by showing the captcha overlay and retrying with success_token - pass captcha redirect/result state through AppSettings - remove old captcha ViewModel, navigation, validation, and DI - add ACRA crash reporting - add WIP message edit mode UI/state - update Gradle wrapper, SDK config, and dependencies
68 lines
2.5 KiB
Kotlin
68 lines
2.5 KiB
Kotlin
package dev.meloda.fast
|
|
|
|
import com.android.build.api.dsl.ApplicationExtension
|
|
import com.android.build.api.dsl.CommonExtension
|
|
import com.android.build.api.dsl.CompileOptions
|
|
import com.android.build.api.dsl.LibraryExtension
|
|
import org.gradle.api.JavaVersion
|
|
import org.gradle.api.Project
|
|
import org.gradle.api.plugins.JavaPluginExtension
|
|
import org.gradle.kotlin.dsl.assign
|
|
import org.gradle.kotlin.dsl.configure
|
|
import org.gradle.kotlin.dsl.provideDelegate
|
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinBaseExtension
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
|
|
|
|
internal fun Project.configureKotlinAndroid(
|
|
commonExtension: CommonExtension,
|
|
) {
|
|
when (commonExtension) {
|
|
is ApplicationExtension -> commonExtension.compileOptions(buildCompileOptions())
|
|
is LibraryExtension -> commonExtension.compileOptions(buildCompileOptions())
|
|
}
|
|
|
|
commonExtension.apply {
|
|
compileSdk = getVersionInt("compileSdk")
|
|
}
|
|
|
|
configureKotlin<KotlinAndroidProjectExtension>()
|
|
}
|
|
|
|
private fun buildCompileOptions(): CompileOptions.() -> Unit = {
|
|
sourceCompatibility = JavaVersion.VERSION_21
|
|
targetCompatibility = JavaVersion.VERSION_21
|
|
}
|
|
|
|
internal fun Project.configureKotlinJvm() {
|
|
extensions.configure<JavaPluginExtension> {
|
|
sourceCompatibility = JavaVersion.VERSION_21
|
|
targetCompatibility = JavaVersion.VERSION_21
|
|
}
|
|
|
|
configureKotlin<KotlinJvmProjectExtension>()
|
|
}
|
|
|
|
private inline fun <reified T : KotlinBaseExtension> Project.configureKotlin() = configure<T> {
|
|
// Treat all Kotlin warnings as errors (disabled by default)
|
|
// Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
|
|
val warningsAsErrors: String? by project
|
|
when (this) {
|
|
is KotlinAndroidProjectExtension -> compilerOptions
|
|
is KotlinJvmProjectExtension -> compilerOptions
|
|
else -> throw IllegalArgumentException("Unsupported project extension $this ${T::class}")
|
|
}.apply {
|
|
jvmTarget = JvmTarget.JVM_21
|
|
allWarningsAsErrors = warningsAsErrors.toBoolean()
|
|
freeCompilerArgs.addAll(
|
|
"-opt-in=kotlin.RequiresOptIn",
|
|
// Enable experimental coroutines APIs, including Flow
|
|
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
|
"-opt-in=kotlinx.coroutines.FlowPreview",
|
|
"-Xannotation-default-target=param-property",
|
|
"-Xcontext-parameters"
|
|
)
|
|
}
|
|
}
|