gradle build convention
This commit is contained in:
@@ -1,46 +0,0 @@
|
|||||||
name: Android CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "dev" ]
|
|
||||||
|
|
||||||
env:
|
|
||||||
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
||||||
RELEASE_SIGN_KEY_ALIAS: ${{ secrets.RELEASE_SIGN_KEY_ALIAS }}
|
|
||||||
RELEASE_SIGN_KEY_PASSWORD: ${{ secrets.RELEASE_SIGN_KEY_PASSWORD }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build_apk_aab:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Build artifacts
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: set up JDK 17
|
|
||||||
uses: actions/setup-java@v4
|
|
||||||
with:
|
|
||||||
java-version: '17'
|
|
||||||
distribution: 'temurin'
|
|
||||||
cache: gradle
|
|
||||||
|
|
||||||
- name: Grant execute permission for gradlew
|
|
||||||
run: chmod +x gradlew
|
|
||||||
|
|
||||||
- name: Build and sign debug APKs
|
|
||||||
run: ./gradlew assembleDebug
|
|
||||||
|
|
||||||
- name: Upload debug APK
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: app-debug.apk
|
|
||||||
path: app/build/outputs/apk/amethyst/debug/app-amethyst-debug.apk
|
|
||||||
|
|
||||||
- name: Build and sign release APKs
|
|
||||||
run: ./gradlew assembleRelease
|
|
||||||
|
|
||||||
- name: Upload release APK
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: app-release.apk
|
|
||||||
path: app/build/outputs/apk/amethyst/release/app-amethyst-release.apk
|
|
||||||
@@ -34,7 +34,7 @@ jobs:
|
|||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: app-debug.apk
|
name: app-debug.apk
|
||||||
path: app/build/outputs/apk/amethyst/debug/app-amethyst-debug.apk
|
path: app/build/outputs/apk/debug/app-debug.apk
|
||||||
|
|
||||||
- name: Build and sign release APKs
|
- name: Build and sign release APKs
|
||||||
run: ./gradlew assembleRelease
|
run: ./gradlew assembleRelease
|
||||||
@@ -43,4 +43,4 @@ jobs:
|
|||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: app-release.apk
|
name: app-release.apk
|
||||||
path: app/build/outputs/apk/amethyst/release/app-amethyst-release.apk
|
path: app/build/outputs/apk/release/app-release.apk
|
||||||
|
|||||||
+5
-46
@@ -1,26 +1,19 @@
|
|||||||
import java.util.Properties
|
import java.util.Properties
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.com.android.application)
|
alias(libs.plugins.fast.android.application)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.application.compose)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
alias(libs.plugins.kotlin.serialization)
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast"
|
namespace = "dev.meloda.fast"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "dev.meloda.fast"
|
applicationId = "dev.meloda.fast"
|
||||||
minSdk = Configs.minSdk
|
|
||||||
targetSdk = Configs.targetSdk
|
|
||||||
versionCode = Configs.appCode
|
|
||||||
versionName = Configs.appName
|
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
versionCode = 4
|
||||||
|
versionName = "0.1.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
@@ -63,40 +56,6 @@ android {
|
|||||||
"proguard-rules.pro"
|
"proguard-rules.pro"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: 15/05/2024, Danil Nikolaev: add to other modules with build convention
|
|
||||||
register("staging") {
|
|
||||||
initWith(getByName("release"))
|
|
||||||
applicationIdSuffix = ".staging"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val flavorDimension = "variant"
|
|
||||||
flavorDimensions += flavorDimension
|
|
||||||
|
|
||||||
productFlavors {
|
|
||||||
register("amethyst") {
|
|
||||||
dimension = flavorDimension
|
|
||||||
isDefault = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
packaging {
|
packaging {
|
||||||
@@ -108,6 +67,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(projects.feature.auth)
|
implementation(projects.feature.auth)
|
||||||
|
|
||||||
implementation(projects.feature.chatmaterials)
|
implementation(projects.feature.chatmaterials)
|
||||||
implementation(projects.feature.conversations)
|
implementation(projects.feature.conversations)
|
||||||
implementation(projects.feature.languagepicker)
|
implementation(projects.feature.languagepicker)
|
||||||
@@ -120,7 +80,6 @@ dependencies {
|
|||||||
|
|
||||||
implementation(projects.core.common)
|
implementation(projects.core.common)
|
||||||
implementation(projects.core.ui)
|
implementation(projects.core.ui)
|
||||||
implementation(projects.core.designsystem)
|
|
||||||
implementation(projects.core.data)
|
implementation(projects.core.data)
|
||||||
implementation(projects.core.model)
|
implementation(projects.core.model)
|
||||||
implementation(projects.core.datastore)
|
implementation(projects.core.datastore)
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ import android.content.res.Resources
|
|||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import dev.meloda.fast.MainViewModelImpl
|
import dev.meloda.fast.MainViewModelImpl
|
||||||
import dev.meloda.fast.auth.authModule
|
import dev.meloda.fast.auth.captcha.di.captchaModule
|
||||||
|
import dev.meloda.fast.auth.login.di.loginModule
|
||||||
|
import dev.meloda.fast.auth.validation.di.validationModule
|
||||||
import dev.meloda.fast.chatmaterials.di.chatMaterialsModule
|
import dev.meloda.fast.chatmaterials.di.chatMaterialsModule
|
||||||
import dev.meloda.fast.common.provider.Provider
|
import dev.meloda.fast.common.provider.Provider
|
||||||
import dev.meloda.fast.conversations.di.conversationsModule
|
import dev.meloda.fast.conversations.di.conversationsModule
|
||||||
@@ -28,7 +30,9 @@ import org.koin.dsl.module
|
|||||||
val applicationModule = module {
|
val applicationModule = module {
|
||||||
includes(dataModule)
|
includes(dataModule)
|
||||||
includes(
|
includes(
|
||||||
authModule,
|
loginModule,
|
||||||
|
validationModule,
|
||||||
|
captchaModule,
|
||||||
conversationsModule,
|
conversationsModule,
|
||||||
settingsModule,
|
settingsModule,
|
||||||
messagesHistoryModule,
|
messagesHistoryModule,
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 10 KiB |
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<color name="ic_launcher_background">#5B37DD</color>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name" translatable="false">Fast Staging</string>
|
|
||||||
</resources>
|
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
`kotlin-dsl`
|
||||||
|
}
|
||||||
|
|
||||||
|
group = "dev.meloda.fast.buildlogic"
|
||||||
|
|
||||||
|
java {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget = JvmTarget.JVM_17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly(libs.kotlin.gradlePlugin)
|
||||||
|
compileOnly(libs.android.gradlePlugin)
|
||||||
|
compileOnly(libs.compose.gradlePlugin)
|
||||||
|
compileOnly(libs.ksp.gradlePlugin)
|
||||||
|
compileOnly(libs.room.gradlePlugin)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
validatePlugins {
|
||||||
|
enableStricterValidation = true
|
||||||
|
failOnWarning = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gradlePlugin {
|
||||||
|
plugins {
|
||||||
|
register("androidApplicationCompose") {
|
||||||
|
id = "fast.android.application.compose"
|
||||||
|
implementationClass = "AndroidApplicationComposeConventionPlugin"
|
||||||
|
}
|
||||||
|
register("androidApplication") {
|
||||||
|
id = "fast.android.application"
|
||||||
|
implementationClass = "AndroidApplicationConventionPlugin"
|
||||||
|
}
|
||||||
|
register("androidLibraryCompose") {
|
||||||
|
id = "fast.android.library.compose"
|
||||||
|
implementationClass = "AndroidLibraryComposeConventionPlugin"
|
||||||
|
}
|
||||||
|
register("androidLibrary") {
|
||||||
|
id = "fast.android.library"
|
||||||
|
implementationClass = "AndroidLibraryConventionPlugin"
|
||||||
|
}
|
||||||
|
register("androidFeature") {
|
||||||
|
id = "fast.android.feature"
|
||||||
|
implementationClass = "AndroidFeatureConventionPlugin"
|
||||||
|
}
|
||||||
|
register("androidTest") {
|
||||||
|
id = "fast.android.test"
|
||||||
|
implementationClass = "AndroidTestConventionPlugin"
|
||||||
|
}
|
||||||
|
register("androidRoom") {
|
||||||
|
id = "fast.android.room"
|
||||||
|
implementationClass = "AndroidRoomConventionPlugin"
|
||||||
|
}
|
||||||
|
register("jvmLibrary") {
|
||||||
|
id = "fast.jvm.library"
|
||||||
|
implementationClass = "JvmLibraryConventionPlugin"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import com.android.build.api.dsl.ApplicationExtension
|
||||||
|
import dev.meloda.fast.configureAndroidCompose
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
|
||||||
|
class AndroidApplicationComposeConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
apply(plugin = "com.android.application")
|
||||||
|
apply(plugin = "org.jetbrains.kotlin.plugin.compose")
|
||||||
|
|
||||||
|
val extension = extensions.getByType<ApplicationExtension>()
|
||||||
|
configureAndroidCompose(extension)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import com.android.build.api.dsl.ApplicationExtension
|
||||||
|
import dev.meloda.fast.configureKotlinAndroid
|
||||||
|
import dev.meloda.fast.libs
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
|
||||||
|
class AndroidApplicationConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
with(pluginManager) {
|
||||||
|
apply("com.android.application")
|
||||||
|
apply("org.jetbrains.kotlin.android")
|
||||||
|
}
|
||||||
|
|
||||||
|
extensions.configure<ApplicationExtension> {
|
||||||
|
configureKotlinAndroid(this)
|
||||||
|
defaultConfig.targetSdk = libs.findVersion("targetSdk").get().toString().toInt()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import dev.meloda.fast.libs
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.dependencies
|
||||||
|
import org.gradle.kotlin.dsl.kotlin
|
||||||
|
|
||||||
|
class AndroidFeatureConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
pluginManager.apply {
|
||||||
|
apply("fast.android.library")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
add("implementation", project(":core:common"))
|
||||||
|
add("implementation", project(":core:data"))
|
||||||
|
add("implementation", project(":core:model"))
|
||||||
|
add("implementation", project(":core:ui"))
|
||||||
|
|
||||||
|
add("testImplementation", kotlin("test"))
|
||||||
|
add("androidTestImplementation", kotlin("test"))
|
||||||
|
|
||||||
|
add("implementation", libs.findBundle("nanokt").get())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import com.android.build.gradle.LibraryExtension
|
||||||
|
import dev.meloda.fast.configureAndroidCompose
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.apply
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
|
||||||
|
class AndroidLibraryComposeConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
apply(plugin = "com.android.library")
|
||||||
|
apply(plugin = "org.jetbrains.kotlin.plugin.compose")
|
||||||
|
|
||||||
|
val extension = extensions.getByType<LibraryExtension>()
|
||||||
|
configureAndroidCompose(extension)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
import com.android.build.api.variant.LibraryAndroidComponentsExtension
|
||||||
|
import com.android.build.gradle.LibraryExtension
|
||||||
|
import dev.meloda.fast.configureKotlinAndroid
|
||||||
|
import dev.meloda.fast.disableUnnecessaryAndroidTests
|
||||||
|
import dev.meloda.fast.libs
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
import org.gradle.kotlin.dsl.dependencies
|
||||||
|
import org.gradle.kotlin.dsl.kotlin
|
||||||
|
|
||||||
|
class AndroidLibraryConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
with(pluginManager) {
|
||||||
|
apply("com.android.library")
|
||||||
|
apply("org.jetbrains.kotlin.android")
|
||||||
|
apply("org.jetbrains.kotlin.plugin.parcelize")
|
||||||
|
apply("org.jetbrains.kotlin.plugin.serialization")
|
||||||
|
}
|
||||||
|
|
||||||
|
extensions.configure<LibraryExtension> {
|
||||||
|
configureKotlinAndroid(this)
|
||||||
|
defaultConfig.targetSdk = libs.findVersion("targetSdk").get().toString().toInt()
|
||||||
|
defaultConfig.testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
extensions.configure<LibraryAndroidComponentsExtension> {
|
||||||
|
disableUnnecessaryAndroidTests(target)
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
add("androidTestImplementation", kotlin("test"))
|
||||||
|
add("testImplementation", kotlin("test"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
import androidx.room.gradle.RoomExtension
|
||||||
|
import com.google.devtools.ksp.gradle.KspExtension
|
||||||
|
import dev.meloda.fast.libs
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
import org.gradle.kotlin.dsl.dependencies
|
||||||
|
|
||||||
|
class AndroidRoomConventionPlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
pluginManager.apply("androidx.room")
|
||||||
|
pluginManager.apply("com.google.devtools.ksp")
|
||||||
|
|
||||||
|
extensions.configure<KspExtension> {
|
||||||
|
arg("room.generateKotlin", "true")
|
||||||
|
}
|
||||||
|
|
||||||
|
extensions.configure<RoomExtension> {
|
||||||
|
schemaDirectory("$projectDir/schemas")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
add("implementation", libs.findLibrary("room.runtime").get())
|
||||||
|
add("implementation", libs.findLibrary("room.ktx").get())
|
||||||
|
add("ksp", libs.findLibrary("room.compiler").get())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import com.android.build.gradle.TestExtension
|
||||||
|
import dev.meloda.fast.configureKotlinAndroid
|
||||||
|
import dev.meloda.fast.libs
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
|
||||||
|
class AndroidTestConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
with(pluginManager) {
|
||||||
|
apply("com.android.test")
|
||||||
|
apply("org.jetbrains.kotlin.android")
|
||||||
|
}
|
||||||
|
|
||||||
|
extensions.configure<TestExtension> {
|
||||||
|
configureKotlinAndroid(this)
|
||||||
|
defaultConfig.targetSdk = libs.findVersion("targetSdk").get().toString().toInt()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import dev.meloda.fast.configureKotlinJvm
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
|
||||||
|
class JvmLibraryConventionPlugin : Plugin<Project> {
|
||||||
|
override fun apply(target: Project) {
|
||||||
|
with(target) {
|
||||||
|
with(pluginManager) {
|
||||||
|
apply("org.jetbrains.kotlin.jvm")
|
||||||
|
}
|
||||||
|
configureKotlinJvm()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package dev.meloda.fast
|
||||||
|
|
||||||
|
import com.android.build.api.dsl.CommonExtension
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.dependencies
|
||||||
|
|
||||||
|
internal fun Project.configureAndroidCompose(
|
||||||
|
commonExtension: CommonExtension<*, *, *, *, *, *>,
|
||||||
|
) {
|
||||||
|
commonExtension.apply {
|
||||||
|
buildFeatures {
|
||||||
|
compose = true
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
val bom = libs.findLibrary("compose-bom").get()
|
||||||
|
add("implementation", platform(bom))
|
||||||
|
add("androidTestImplementation", platform(bom))
|
||||||
|
add("implementation", libs.findLibrary("compose-ui-tooling-preview").get())
|
||||||
|
add("debugImplementation", libs.findLibrary("compose-ui-tooling").get())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package dev.meloda.fast
|
||||||
|
|
||||||
|
import com.android.build.api.variant.LibraryAndroidComponentsExtension
|
||||||
|
import org.gradle.api.Project
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable unnecessary Android instrumented tests for the [project] if there is no `androidTest` folder.
|
||||||
|
* Otherwise, these projects would be compiled, packaged, installed and ran only to end-up with the following message:
|
||||||
|
*
|
||||||
|
* > Starting 0 tests on AVD
|
||||||
|
*
|
||||||
|
* Note: this could be improved by checking other potential sourceSets based on buildTypes and flavors.
|
||||||
|
*/
|
||||||
|
internal fun LibraryAndroidComponentsExtension.disableUnnecessaryAndroidTests(
|
||||||
|
project: Project,
|
||||||
|
) = beforeVariants {
|
||||||
|
it.enableAndroidTest = it.enableAndroidTest
|
||||||
|
&& project.projectDir.resolve("src/androidTest").exists()
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
package dev.meloda.fast
|
||||||
|
|
||||||
|
import com.android.build.api.dsl.CommonExtension
|
||||||
|
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.KotlinJvmProjectExtension
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension
|
||||||
|
|
||||||
|
internal fun Project.configureKotlinAndroid(
|
||||||
|
commonExtension: CommonExtension<*, *, *, *, *, *>,
|
||||||
|
) {
|
||||||
|
commonExtension.apply {
|
||||||
|
compileSdk = libs.findVersion("compileSdk").get().toString().toInt()
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdk = libs.findVersion("minSdk").get().toString().toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configureKotlin<KotlinAndroidProjectExtension>()
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun Project.configureKotlinJvm() {
|
||||||
|
extensions.configure<JavaPluginExtension> {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
|
}
|
||||||
|
|
||||||
|
configureKotlin<KotlinJvmProjectExtension>()
|
||||||
|
}
|
||||||
|
|
||||||
|
private inline fun <reified T : KotlinTopLevelExtension> 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 -> TODO("Unsupported project extension $this ${T::class}")
|
||||||
|
}.apply {
|
||||||
|
jvmTarget = JvmTarget.JVM_17
|
||||||
|
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",
|
||||||
|
"-Xcontext-receivers"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package dev.meloda.fast
|
||||||
|
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.artifacts.VersionCatalog
|
||||||
|
import org.gradle.api.artifacts.VersionCatalogsExtension
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
|
||||||
|
val Project.libs
|
||||||
|
get(): VersionCatalog = extensions.getByType<VersionCatalogsExtension>().named("libs")
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Gradle properties are not passed to included builds https://github.com/gradle/gradle/issues/2534
|
||||||
|
org.gradle.parallel=true
|
||||||
|
org.gradle.caching=true
|
||||||
|
org.gradle.configureondemand=true
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
dependencyResolutionManagement {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
versionCatalogs {
|
||||||
|
create("libs") {
|
||||||
|
from(files("../gradle/libs.versions.toml"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.name = "build-logic"
|
||||||
|
include(":convention")
|
||||||
+8
-25
@@ -1,28 +1,11 @@
|
|||||||
import dev.iurysouza.modulegraph.Theme
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.com.android.application) apply false
|
alias(libs.plugins.android.application) apply false
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android) apply false
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize) apply false
|
|
||||||
alias(libs.plugins.android.library) apply false
|
alias(libs.plugins.android.library) apply false
|
||||||
|
// alias(libs.plugins.org.jetbrains.kotlin.android) apply false
|
||||||
id("dev.iurysouza.modulegraph") version "0.10.0"
|
alias(libs.plugins.kotlin.parcelize) apply false
|
||||||
}
|
alias(libs.plugins.kotlin.serialization) apply false
|
||||||
|
alias(libs.plugins.compose) apply false
|
||||||
moduleGraphConfig {
|
alias(libs.plugins.kotlin.jvm) apply false
|
||||||
readmePath.set("${rootDir}/README.md")
|
alias(libs.plugins.room) apply false
|
||||||
heading.set("### Module Graph")
|
alias(libs.plugins.ksp) apply false
|
||||||
theme.set(
|
|
||||||
Theme.BASE(
|
|
||||||
mapOf(
|
|
||||||
"primaryTextColor" to "#fff",
|
|
||||||
"primaryColor" to "#5a4f7c",
|
|
||||||
"primaryBorderColor" to "#5a4f7c",
|
|
||||||
"lineColor" to "#f5a623",
|
|
||||||
"tertiaryColor" to "#40375c",
|
|
||||||
"fontSize" to "12px",
|
|
||||||
),
|
|
||||||
focusColor = "#FA8140"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
plugins {
|
|
||||||
`kotlin-dsl`
|
|
||||||
}
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenCentral()
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
rootProject.name = "buildSrc"
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
import org.gradle.api.JavaVersion
|
|
||||||
|
|
||||||
object Configs {
|
|
||||||
|
|
||||||
const val appCode = 4
|
|
||||||
const val appName = "0.1.1"
|
|
||||||
|
|
||||||
const val compileSdk = 35
|
|
||||||
const val minSdk = 24
|
|
||||||
const val targetSdk = 35
|
|
||||||
|
|
||||||
val java = JavaVersion.VERSION_17
|
|
||||||
}
|
|
||||||
@@ -1,37 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.common"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.common"
|
namespace = "dev.meloda.fast.common"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,30 +1,9 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.data"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.data"
|
namespace = "dev.meloda.fast.data"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,36 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.room)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.database"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.database"
|
namespace = "dev.meloda.fast.database"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
ksp {
|
|
||||||
arg("room.schemaLocation", "$projectDir/schemas")
|
|
||||||
arg("room.generateKotlin", "true")
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,30 +1,9 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.datastore"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.datastore"
|
namespace = "dev.meloda.fast.datastore"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
/build
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
plugins {
|
|
||||||
alias(libs.plugins.android.library)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
}
|
|
||||||
|
|
||||||
group = "dev.meloda.fast.designsystem"
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "dev.meloda.fast.designsystem"
|
|
||||||
|
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(projects.core.common)
|
|
||||||
implementation(projects.core.datastore)
|
|
||||||
implementation(projects.core.ui)
|
|
||||||
|
|
||||||
implementation(libs.appcompat)
|
|
||||||
|
|
||||||
implementation(platform(libs.compose.bom))
|
|
||||||
implementation(libs.bundles.compose)
|
|
||||||
|
|
||||||
implementation(libs.haze)
|
|
||||||
implementation(libs.haze.materials)
|
|
||||||
|
|
||||||
debugImplementation(libs.compose.ui.tooling)
|
|
||||||
}
|
|
||||||
@@ -1,31 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.ksp)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.model"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.model"
|
namespace = "dev.meloda.fast.datastore"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,31 +1,11 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.ksp)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.network"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.network"
|
namespace = "dev.meloda.fast.network"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
buildConfig = true
|
buildConfig = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.library)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.ui"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.ui"
|
namespace = "dev.meloda.fast.ui"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -4,21 +4,18 @@ import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
|
|||||||
val sdkPackage: String = getLocalProperty("sdkPackage", "\"\"")
|
val sdkPackage: String = getLocalProperty("sdkPackage", "\"\"")
|
||||||
val sdkFingerprint: String = getLocalProperty("sdkFingerprint", "\"\"")
|
val sdkFingerprint: String = getLocalProperty("sdkFingerprint", "\"\"")
|
||||||
|
|
||||||
|
val debugUserId: String = getLocalProperty("userId", "\"0\"")
|
||||||
|
val debugAccessToken: String = getLocalProperty("accessToken", "\"\"")
|
||||||
|
|
||||||
fun getLocalProperty(key: String, defValue: String): String {
|
fun getLocalProperty(key: String, defValue: String): String {
|
||||||
return gradleLocalProperties(rootDir, providers).getProperty(key, defValue)
|
return gradleLocalProperties(rootDir, providers).getProperty(key, defValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.feature)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.auth"
|
|
||||||
|
|
||||||
androidComponents {
|
androidComponents {
|
||||||
onVariants { variant ->
|
onVariants { variant ->
|
||||||
variant.buildConfigFields.apply {
|
variant.buildConfigFields.apply {
|
||||||
@@ -38,55 +35,50 @@ androidComponents {
|
|||||||
comment = "sdkFingerprint for VK"
|
comment = "sdkFingerprint for VK"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
put(
|
||||||
|
"debugUserId",
|
||||||
|
BuildConfigField(
|
||||||
|
type = "String",
|
||||||
|
value = debugUserId,
|
||||||
|
comment = "user id for debugging purposes"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
put(
|
||||||
|
"debugAccessToken",
|
||||||
|
BuildConfigField(
|
||||||
|
type = "String",
|
||||||
|
value = debugAccessToken,
|
||||||
|
comment = "access token for debugging purposes"
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.auth"
|
namespace = "dev.meloda.fast.auth"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
compose = true
|
|
||||||
buildConfig = true
|
buildConfig = true
|
||||||
}
|
}
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(projects.core.data)
|
implementation(projects.core.data)
|
||||||
implementation(projects.core.ui)
|
implementation(projects.core.ui)
|
||||||
|
|
||||||
implementation(projects.feature.conversations)
|
implementation(platform(libs.compose.bom))
|
||||||
|
implementation(libs.bundles.compose)
|
||||||
|
|
||||||
implementation(projects.feature.auth.login)
|
implementation(libs.coil.compose)
|
||||||
implementation(projects.feature.auth.captcha)
|
|
||||||
implementation(projects.feature.auth.validation)
|
|
||||||
implementation(projects.feature.auth.userbanned)
|
|
||||||
|
|
||||||
implementation(libs.koin.androidx.compose)
|
implementation(libs.koin.androidx.compose)
|
||||||
implementation(libs.koin.android)
|
implementation(libs.koin.android)
|
||||||
|
|
||||||
implementation(libs.androidx.navigation.compose)
|
implementation(libs.androidx.navigation.compose)
|
||||||
implementation(libs.kotlin.serialization)
|
implementation(libs.kotlin.serialization)
|
||||||
|
|
||||||
|
implementation(libs.eithernet)
|
||||||
|
|
||||||
|
androidTestImplementation(libs.bundles.compose.ui.test)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
/build
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
plugins {
|
|
||||||
alias(libs.plugins.android.library)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "dev.meloda.fast.captcha"
|
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
buildConfig = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(projects.core.data)
|
|
||||||
implementation(projects.core.ui)
|
|
||||||
|
|
||||||
implementation(libs.nanokt.android)
|
|
||||||
implementation(libs.nanokt.jvm)
|
|
||||||
implementation(libs.nanokt)
|
|
||||||
|
|
||||||
implementation(libs.koin.android)
|
|
||||||
implementation(libs.koin.androidx.compose)
|
|
||||||
|
|
||||||
implementation(platform(libs.compose.bom))
|
|
||||||
implementation(libs.bundles.compose)
|
|
||||||
|
|
||||||
implementation(libs.coil.compose)
|
|
||||||
|
|
||||||
implementation(libs.eithernet)
|
|
||||||
implementation(libs.androidx.navigation.compose)
|
|
||||||
implementation(libs.kotlin.serialization)
|
|
||||||
}
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
# Add project specific ProGuard rules here.
|
|
||||||
# You can control the set of applied configuration files using the
|
|
||||||
# proguardFiles setting in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Uncomment this to preserve the line number information for
|
|
||||||
# debugging stack traces.
|
|
||||||
#-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
|
||||||
# hide the original source file name.
|
|
||||||
#-renamesourcefileattribute SourceFile
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/build
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
import com.android.build.api.variant.BuildConfigField
|
|
||||||
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
|
|
||||||
|
|
||||||
val debugUserId: String = getLocalProperty("userId", "\"0\"")
|
|
||||||
val debugAccessToken: String = getLocalProperty("accessToken", "\"\"")
|
|
||||||
|
|
||||||
fun getLocalProperty(key: String, defValue: String): String {
|
|
||||||
return gradleLocalProperties(rootDir, providers).getProperty(key, defValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
alias(libs.plugins.android.library)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
|
||||||
|
|
||||||
androidComponents {
|
|
||||||
onVariants { variant ->
|
|
||||||
variant.buildConfigFields.apply {
|
|
||||||
put(
|
|
||||||
"debugUserId",
|
|
||||||
BuildConfigField(
|
|
||||||
type = "String",
|
|
||||||
value = debugUserId,
|
|
||||||
comment = "user id for debugging purposes"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
put(
|
|
||||||
"debugAccessToken",
|
|
||||||
BuildConfigField(
|
|
||||||
type = "String",
|
|
||||||
value = debugAccessToken,
|
|
||||||
comment = "access token for debugging purposes"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "dev.meloda.fast.auth.login"
|
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
buildConfig = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(projects.core.data)
|
|
||||||
implementation(projects.core.ui)
|
|
||||||
|
|
||||||
implementation(libs.nanokt.android)
|
|
||||||
implementation(libs.nanokt.jvm)
|
|
||||||
implementation(libs.nanokt)
|
|
||||||
|
|
||||||
implementation(libs.koin.android)
|
|
||||||
implementation(libs.koin.androidx.compose)
|
|
||||||
|
|
||||||
implementation(platform(libs.compose.bom))
|
|
||||||
implementation(libs.bundles.compose)
|
|
||||||
|
|
||||||
implementation(libs.coil.compose)
|
|
||||||
|
|
||||||
implementation(libs.eithernet)
|
|
||||||
implementation(libs.androidx.navigation.compose)
|
|
||||||
implementation(libs.kotlin.serialization)
|
|
||||||
|
|
||||||
implementation(libs.rebugger)
|
|
||||||
|
|
||||||
androidTestImplementation(libs.bundles.compose.ui.test)
|
|
||||||
}
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
# Add project specific ProGuard rules here.
|
|
||||||
# You can control the set of applied configuration files using the
|
|
||||||
# proguardFiles setting in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Uncomment this to preserve the line number information for
|
|
||||||
# debugging stack traces.
|
|
||||||
#-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
|
||||||
# hide the original source file name.
|
|
||||||
#-renamesourcefileattribute SourceFile
|
|
||||||
@@ -6,16 +6,16 @@ import androidx.navigation.navigation
|
|||||||
import dev.meloda.fast.auth.captcha.navigation.captchaScreen
|
import dev.meloda.fast.auth.captcha.navigation.captchaScreen
|
||||||
import dev.meloda.fast.auth.captcha.navigation.navigateToCaptcha
|
import dev.meloda.fast.auth.captcha.navigation.navigateToCaptcha
|
||||||
import dev.meloda.fast.auth.captcha.navigation.setCaptchaResult
|
import dev.meloda.fast.auth.captcha.navigation.setCaptchaResult
|
||||||
|
import dev.meloda.fast.auth.login.navigation.Logo
|
||||||
|
import dev.meloda.fast.auth.login.navigation.loginScreen
|
||||||
|
import dev.meloda.fast.auth.login.navigation.navigateToLogin
|
||||||
|
import dev.meloda.fast.auth.userbanned.model.UserBannedArguments
|
||||||
|
import dev.meloda.fast.auth.userbanned.navigation.navigateToUserBanned
|
||||||
|
import dev.meloda.fast.auth.userbanned.navigation.userBannedRoute
|
||||||
import dev.meloda.fast.auth.validation.model.ValidationArguments
|
import dev.meloda.fast.auth.validation.model.ValidationArguments
|
||||||
import dev.meloda.fast.auth.validation.navigation.navigateToValidation
|
import dev.meloda.fast.auth.validation.navigation.navigateToValidation
|
||||||
import dev.meloda.fast.auth.validation.navigation.setValidationResult
|
import dev.meloda.fast.auth.validation.navigation.setValidationResult
|
||||||
import dev.meloda.fast.auth.validation.navigation.validationScreen
|
import dev.meloda.fast.auth.validation.navigation.validationScreen
|
||||||
import dev.meloda.fast.auth.userbanned.model.UserBannedArguments
|
|
||||||
import dev.meloda.fast.auth.userbanned.navigation.navigateToUserBanned
|
|
||||||
import dev.meloda.fast.auth.userbanned.navigation.userBannedRoute
|
|
||||||
import dev.meloda.fast.auth.login.navigation.Logo
|
|
||||||
import dev.meloda.fast.auth.login.navigation.loginScreen
|
|
||||||
import dev.meloda.fast.auth.login.navigation.navigateToLogin
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import java.net.URLEncoder
|
import java.net.URLEncoder
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -70,12 +70,12 @@ interface LoginViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class LoginViewModelImpl(
|
class LoginViewModelImpl(
|
||||||
private val oAuthUseCase: OAuthUseCase,
|
private val oAuthUseCase: dev.meloda.fast.auth.login.OAuthUseCase,
|
||||||
private val usersUseCase: UsersUseCase,
|
private val usersUseCase: UsersUseCase,
|
||||||
private val accountsRepository: AccountsRepository,
|
private val accountsRepository: AccountsRepository,
|
||||||
private val loginValidator: LoginValidator,
|
private val loginValidator: LoginValidator,
|
||||||
private val longPollController: LongPollController
|
private val longPollController: LongPollController
|
||||||
) : ViewModel(), LoginViewModel {
|
) : ViewModel(), dev.meloda.fast.auth.login.LoginViewModel {
|
||||||
|
|
||||||
override val screenState = MutableStateFlow(LoginScreenState.EMPTY)
|
override val screenState = MutableStateFlow(LoginScreenState.EMPTY)
|
||||||
override val loginError = MutableStateFlow<LoginError?>(null)
|
override val loginError = MutableStateFlow<LoginError?>(null)
|
||||||
+1
-1
@@ -12,6 +12,6 @@ import org.koin.dsl.module
|
|||||||
|
|
||||||
val loginModule = module {
|
val loginModule = module {
|
||||||
singleOf(::LoginValidator)
|
singleOf(::LoginValidator)
|
||||||
viewModelOf(::LoginViewModelImpl) bind LoginViewModel::class
|
viewModelOf(::LoginViewModelImpl) bind dev.meloda.fast.auth.login.LoginViewModel::class
|
||||||
singleOf(::OAuthUseCaseImpl) bind OAuthUseCase::class
|
singleOf(::OAuthUseCaseImpl) bind OAuthUseCase::class
|
||||||
}
|
}
|
||||||
+2
-2
@@ -29,8 +29,8 @@ fun NavGraphBuilder.loginScreen(
|
|||||||
navController: NavController
|
navController: NavController
|
||||||
) {
|
) {
|
||||||
composable<Login> { backStackEntry ->
|
composable<Login> { backStackEntry ->
|
||||||
val viewModel: LoginViewModel =
|
val viewModel: dev.meloda.fast.auth.login.LoginViewModel =
|
||||||
backStackEntry.sharedViewModel<LoginViewModelImpl>(navController = navController)
|
backStackEntry.sharedViewModel<dev.meloda.fast.auth.login.LoginViewModelImpl>(navController = navController)
|
||||||
|
|
||||||
val validationCode = backStackEntry.getValidationResult()
|
val validationCode = backStackEntry.getValidationResult()
|
||||||
val captchaCode = backStackEntry.getCaptchaResult()
|
val captchaCode = backStackEntry.getCaptchaResult()
|
||||||
+1
-1
@@ -76,7 +76,7 @@ fun LoginRoute(
|
|||||||
onNavigateToValidation: (LoginValidationArguments) -> Unit,
|
onNavigateToValidation: (LoginValidationArguments) -> Unit,
|
||||||
validationCode: String?,
|
validationCode: String?,
|
||||||
captchaCode: String?,
|
captchaCode: String?,
|
||||||
viewModel: LoginViewModel = koinViewModel<LoginViewModelImpl>()
|
viewModel: dev.meloda.fast.auth.login.LoginViewModel = koinViewModel<dev.meloda.fast.auth.login.LoginViewModelImpl>()
|
||||||
) {
|
) {
|
||||||
val screenState by viewModel.screenState.collectAsStateWithLifecycle()
|
val screenState by viewModel.screenState.collectAsStateWithLifecycle()
|
||||||
val isNeedToOpenMain by viewModel.isNeedToOpenMain.collectAsStateWithLifecycle()
|
val isNeedToOpenMain by viewModel.isNeedToOpenMain.collectAsStateWithLifecycle()
|
||||||
+2
-4
@@ -40,9 +40,7 @@ import androidx.compose.ui.unit.LayoutDirection
|
|||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import dev.meloda.fast.auth.login.BuildConfig
|
import dev.meloda.fast.auth.BuildConfig
|
||||||
import dev.meloda.fast.auth.login.LoginViewModel
|
|
||||||
import dev.meloda.fast.auth.login.LoginViewModelImpl
|
|
||||||
import dev.meloda.fast.ui.components.ActionInvokeDismiss
|
import dev.meloda.fast.ui.components.ActionInvokeDismiss
|
||||||
import dev.meloda.fast.ui.components.MaterialDialog
|
import dev.meloda.fast.ui.components.MaterialDialog
|
||||||
import dev.meloda.fast.ui.theme.LocalSizeConfig
|
import dev.meloda.fast.ui.theme.LocalSizeConfig
|
||||||
@@ -53,7 +51,7 @@ import dev.meloda.fast.ui.R as UiR
|
|||||||
fun LogoRoute(
|
fun LogoRoute(
|
||||||
onNavigateToMain: () -> Unit,
|
onNavigateToMain: () -> Unit,
|
||||||
onGoNextButtonClicked: () -> Unit,
|
onGoNextButtonClicked: () -> Unit,
|
||||||
viewModel: LoginViewModel = koinViewModel<LoginViewModelImpl>()
|
viewModel: dev.meloda.fast.auth.login.LoginViewModel = koinViewModel<dev.meloda.fast.auth.login.LoginViewModelImpl>()
|
||||||
) {
|
) {
|
||||||
val screenState by viewModel.screenState.collectAsStateWithLifecycle()
|
val screenState by viewModel.screenState.collectAsStateWithLifecycle()
|
||||||
val isNeedToOpenMain by viewModel.isNeedToOpenMain.collectAsStateWithLifecycle()
|
val isNeedToOpenMain by viewModel.isNeedToOpenMain.collectAsStateWithLifecycle()
|
||||||
@@ -1 +0,0 @@
|
|||||||
/build
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
plugins {
|
|
||||||
alias(libs.plugins.android.library)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
}
|
|
||||||
|
|
||||||
group = "dev.meloda.fast.auth.userbanned"
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "dev.meloda.fast.auth.userbanned"
|
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(projects.core.data)
|
|
||||||
implementation(projects.core.model)
|
|
||||||
implementation(projects.core.ui)
|
|
||||||
|
|
||||||
implementation(libs.nanokt.android)
|
|
||||||
implementation(libs.nanokt.jvm)
|
|
||||||
implementation(libs.nanokt)
|
|
||||||
|
|
||||||
implementation(libs.koin.android)
|
|
||||||
implementation(libs.koin.androidx.compose)
|
|
||||||
|
|
||||||
implementation(platform(libs.compose.bom))
|
|
||||||
implementation(libs.bundles.compose)
|
|
||||||
|
|
||||||
implementation(libs.coil.compose)
|
|
||||||
implementation(libs.androidx.navigation.compose)
|
|
||||||
implementation(libs.kotlin.serialization)
|
|
||||||
|
|
||||||
debugImplementation(libs.compose.ui.tooling)
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
/build
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
plugins {
|
|
||||||
alias(libs.plugins.android.library)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "dev.meloda.fast.validation"
|
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
buildConfig = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(projects.core.common)
|
|
||||||
implementation(projects.core.data)
|
|
||||||
implementation(projects.core.ui)
|
|
||||||
|
|
||||||
implementation(libs.nanokt.android)
|
|
||||||
implementation(libs.nanokt.jvm)
|
|
||||||
implementation(libs.nanokt)
|
|
||||||
|
|
||||||
implementation(libs.koin.android)
|
|
||||||
implementation(libs.koin.androidx.compose)
|
|
||||||
|
|
||||||
implementation(platform(libs.compose.bom))
|
|
||||||
implementation(libs.bundles.compose)
|
|
||||||
|
|
||||||
implementation(libs.coil.compose)
|
|
||||||
|
|
||||||
implementation(libs.eithernet)
|
|
||||||
implementation(libs.androidx.navigation.compose)
|
|
||||||
implementation(libs.kotlin.serialization)
|
|
||||||
}
|
|
||||||
-21
@@ -1,21 +0,0 @@
|
|||||||
# Add project specific ProGuard rules here.
|
|
||||||
# You can control the set of applied configuration files using the
|
|
||||||
# proguardFiles setting in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Uncomment this to preserve the line number information for
|
|
||||||
# debugging stack traces.
|
|
||||||
#-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
|
||||||
# hide the original source file name.
|
|
||||||
#-renamesourcefileattribute SourceFile
|
|
||||||
@@ -1,41 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.feature)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.chatmaterials"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.chatmaterials"
|
namespace = "dev.meloda.fast.chatmaterials"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,40 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.feature)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.conversations"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.conversations"
|
namespace = "dev.meloda.fast.conversations"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,40 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.feature)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.friends"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.friends"
|
namespace = "dev.meloda.fast.friends"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
# Add project specific ProGuard rules here.
|
|
||||||
# You can control the set of applied configuration files using the
|
|
||||||
# proguardFiles setting in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Uncomment this to preserve the line number information for
|
|
||||||
# debugging stack traces.
|
|
||||||
#-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
|
||||||
# hide the original source file name.
|
|
||||||
#-renamesourcefileattribute SourceFile
|
|
||||||
@@ -1,41 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
alias(libs.plugins.android.library)
|
alias(libs.plugins.fast.android.feature)
|
||||||
alias(libs.plugins.org.jetbrains.kotlin.android)
|
alias(libs.plugins.fast.android.library.compose)
|
||||||
alias(libs.plugins.com.google.devtools.ksp)
|
|
||||||
alias(libs.plugins.kotlin.compose.compiler)
|
|
||||||
alias(libs.plugins.kotlin.serialization)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.meloda.fast.languagepicker"
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "dev.meloda.fast.languagepicker"
|
namespace = "dev.meloda.fast.languagepicker"
|
||||||
compileSdk = Configs.compileSdk
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
minSdk = Configs.minSdk
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
isMinifyEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = Configs.java
|
|
||||||
targetCompatibility = Configs.java
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = Configs.java.toString()
|
|
||||||
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn", "-Xcontext-receivers")
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
compose = true
|
|
||||||
}
|
|
||||||
|
|
||||||
composeOptions {
|
|
||||||
useLiveLiterals = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user