diff --git a/.github/workflows/android_dev.yml b/.github/workflows/android_dev.yml
deleted file mode 100644
index b42b223e..00000000
--- a/.github/workflows/android_dev.yml
+++ /dev/null
@@ -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
diff --git a/.github/workflows/android_master.yml b/.github/workflows/android_master.yml
index e2f588c6..254f13b9 100644
--- a/.github/workflows/android_master.yml
+++ b/.github/workflows/android_master.yml
@@ -34,7 +34,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
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
run: ./gradlew assembleRelease
@@ -43,4 +43,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: app-release.apk
- path: app/build/outputs/apk/amethyst/release/app-amethyst-release.apk
+ path: app/build/outputs/apk/release/app-release.apk
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 6464dbbf..e7308d7f 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,26 +1,19 @@
import java.util.Properties
plugins {
- alias(libs.plugins.com.android.application)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
- alias(libs.plugins.com.google.devtools.ksp)
- alias(libs.plugins.kotlin.compose.compiler)
+ alias(libs.plugins.fast.android.application)
+ alias(libs.plugins.fast.android.application.compose)
alias(libs.plugins.kotlin.serialization)
}
android {
namespace = "dev.meloda.fast"
- compileSdk = Configs.compileSdk
defaultConfig {
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 {
@@ -63,40 +56,6 @@ android {
"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 {
@@ -108,6 +67,7 @@ android {
dependencies {
implementation(projects.feature.auth)
+
implementation(projects.feature.chatmaterials)
implementation(projects.feature.conversations)
implementation(projects.feature.languagepicker)
@@ -120,7 +80,6 @@ dependencies {
implementation(projects.core.common)
implementation(projects.core.ui)
- implementation(projects.core.designsystem)
implementation(projects.core.data)
implementation(projects.core.model)
implementation(projects.core.datastore)
diff --git a/app/src/main/kotlin/dev/meloda/fast/common/di/ApplicationModule.kt b/app/src/main/kotlin/dev/meloda/fast/common/di/ApplicationModule.kt
index 4cbcb03f..5a25d60c 100644
--- a/app/src/main/kotlin/dev/meloda/fast/common/di/ApplicationModule.kt
+++ b/app/src/main/kotlin/dev/meloda/fast/common/di/ApplicationModule.kt
@@ -5,7 +5,9 @@ import android.content.res.Resources
import android.os.PowerManager
import androidx.preference.PreferenceManager
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.common.provider.Provider
import dev.meloda.fast.conversations.di.conversationsModule
@@ -28,7 +30,9 @@ import org.koin.dsl.module
val applicationModule = module {
includes(dataModule)
includes(
- authModule,
+ loginModule,
+ validationModule,
+ captchaModule,
conversationsModule,
settingsModule,
messagesHistoryModule,
diff --git a/app/src/staging/res/mipmap-hdpi/ic_launcher.png b/app/src/staging/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 198f18ea..00000000
Binary files a/app/src/staging/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/staging/res/mipmap-mdpi/ic_launcher.png b/app/src/staging/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 12b7c714..00000000
Binary files a/app/src/staging/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/staging/res/mipmap-xhdpi/ic_launcher.png b/app/src/staging/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 37a31bb6..00000000
Binary files a/app/src/staging/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png b/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 4194db6f..00000000
Binary files a/app/src/staging/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index ee939bd8..00000000
Binary files a/app/src/staging/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/staging/res/values/ic_launcher_background.xml b/app/src/staging/res/values/ic_launcher_background.xml
deleted file mode 100644
index 30bd17f3..00000000
--- a/app/src/staging/res/values/ic_launcher_background.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #5B37DD
-
diff --git a/app/src/staging/res/values/strings.xml b/app/src/staging/res/values/strings.xml
deleted file mode 100644
index aef1013b..00000000
--- a/app/src/staging/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- Fast Staging
-
diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts
new file mode 100644
index 00000000..4796dcd8
--- /dev/null
+++ b/build-logic/convention/build.gradle.kts
@@ -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"
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt
new file mode 100644
index 00000000..1ad0d7fc
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt
@@ -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 {
+ override fun apply(target: Project) {
+ with(target) {
+ apply(plugin = "com.android.application")
+ apply(plugin = "org.jetbrains.kotlin.plugin.compose")
+
+ val extension = extensions.getByType()
+ configureAndroidCompose(extension)
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt
new file mode 100644
index 00000000..62a7b7fb
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt
@@ -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 {
+ override fun apply(target: Project) {
+ with(target) {
+ with(pluginManager) {
+ apply("com.android.application")
+ apply("org.jetbrains.kotlin.android")
+ }
+
+ extensions.configure {
+ configureKotlinAndroid(this)
+ defaultConfig.targetSdk = libs.findVersion("targetSdk").get().toString().toInt()
+ }
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt
new file mode 100644
index 00000000..d11e15fc
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt
@@ -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 {
+ 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())
+ }
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt
new file mode 100644
index 00000000..a71f64dd
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.kt
@@ -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 {
+ override fun apply(target: Project) {
+ with(target) {
+ apply(plugin = "com.android.library")
+ apply(plugin = "org.jetbrains.kotlin.plugin.compose")
+
+ val extension = extensions.getByType()
+ configureAndroidCompose(extension)
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
new file mode 100644
index 00000000..5d6e3c27
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt
@@ -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 {
+ 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 {
+ configureKotlinAndroid(this)
+ defaultConfig.targetSdk = libs.findVersion("targetSdk").get().toString().toInt()
+ defaultConfig.testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+ extensions.configure {
+ disableUnnecessaryAndroidTests(target)
+ }
+ dependencies {
+ add("androidTestImplementation", kotlin("test"))
+ add("testImplementation", kotlin("test"))
+ }
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
new file mode 100644
index 00000000..3c97102b
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidRoomConventionPlugin.kt
@@ -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 {
+
+ override fun apply(target: Project) {
+ with(target) {
+ pluginManager.apply("androidx.room")
+ pluginManager.apply("com.google.devtools.ksp")
+
+ extensions.configure {
+ arg("room.generateKotlin", "true")
+ }
+
+ extensions.configure {
+ 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())
+ }
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt
new file mode 100644
index 00000000..d032c87c
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/AndroidTestConventionPlugin.kt
@@ -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 {
+ override fun apply(target: Project) {
+ with(target) {
+ with(pluginManager) {
+ apply("com.android.test")
+ apply("org.jetbrains.kotlin.android")
+ }
+
+ extensions.configure {
+ configureKotlinAndroid(this)
+ defaultConfig.targetSdk = libs.findVersion("targetSdk").get().toString().toInt()
+ }
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt
new file mode 100644
index 00000000..c847650b
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt
@@ -0,0 +1,14 @@
+import dev.meloda.fast.configureKotlinJvm
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+
+class JvmLibraryConventionPlugin : Plugin {
+ override fun apply(target: Project) {
+ with(target) {
+ with(pluginManager) {
+ apply("org.jetbrains.kotlin.jvm")
+ }
+ configureKotlinJvm()
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/dev/meloda/fast/AndroidCompose.kt b/build-logic/convention/src/main/kotlin/dev/meloda/fast/AndroidCompose.kt
new file mode 100644
index 00000000..204fee29
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/dev/meloda/fast/AndroidCompose.kt
@@ -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())
+ }
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/dev/meloda/fast/AndroidInstrumentedTests.kt b/build-logic/convention/src/main/kotlin/dev/meloda/fast/AndroidInstrumentedTests.kt
new file mode 100644
index 00000000..b9212954
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/dev/meloda/fast/AndroidInstrumentedTests.kt
@@ -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()
+}
diff --git a/build-logic/convention/src/main/kotlin/dev/meloda/fast/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/dev/meloda/fast/KotlinAndroid.kt
new file mode 100644
index 00000000..20e36b56
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/dev/meloda/fast/KotlinAndroid.kt
@@ -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()
+}
+
+internal fun Project.configureKotlinJvm() {
+ extensions.configure {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+
+ configureKotlin()
+}
+
+private inline fun Project.configureKotlin() = configure {
+ // 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"
+ )
+ }
+}
diff --git a/build-logic/convention/src/main/kotlin/dev/meloda/fast/ProjectExtensions.kt b/build-logic/convention/src/main/kotlin/dev/meloda/fast/ProjectExtensions.kt
new file mode 100644
index 00000000..6775041d
--- /dev/null
+++ b/build-logic/convention/src/main/kotlin/dev/meloda/fast/ProjectExtensions.kt
@@ -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().named("libs")
diff --git a/build-logic/gradle.properties b/build-logic/gradle.properties
new file mode 100644
index 00000000..1c9073eb
--- /dev/null
+++ b/build-logic/gradle.properties
@@ -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
diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts
new file mode 100644
index 00000000..2907fbfb
--- /dev/null
+++ b/build-logic/settings.gradle.kts
@@ -0,0 +1,14 @@
+dependencyResolutionManagement {
+ repositories {
+ google()
+ mavenCentral()
+ }
+ versionCatalogs {
+ create("libs") {
+ from(files("../gradle/libs.versions.toml"))
+ }
+ }
+}
+
+rootProject.name = "build-logic"
+include(":convention")
diff --git a/build.gradle.kts b/build.gradle.kts
index 31f5fa8b..44761e5e 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,28 +1,11 @@
-import dev.iurysouza.modulegraph.Theme
-
plugins {
- alias(libs.plugins.com.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.application) apply false
alias(libs.plugins.android.library) apply false
-
- id("dev.iurysouza.modulegraph") version "0.10.0"
-}
-
-moduleGraphConfig {
- readmePath.set("${rootDir}/README.md")
- heading.set("### Module Graph")
- 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"
- ),
- )
+// alias(libs.plugins.org.jetbrains.kotlin.android) apply false
+ alias(libs.plugins.kotlin.parcelize) apply false
+ alias(libs.plugins.kotlin.serialization) apply false
+ alias(libs.plugins.compose) apply false
+ alias(libs.plugins.kotlin.jvm) apply false
+ alias(libs.plugins.room) apply false
+ alias(libs.plugins.ksp) apply false
}
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
deleted file mode 100644
index b6413e30..00000000
--- a/buildSrc/build.gradle.kts
+++ /dev/null
@@ -1,7 +0,0 @@
-plugins {
- `kotlin-dsl`
-}
-
-repositories {
- mavenCentral()
-}
diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts
deleted file mode 100644
index 29744ec1..00000000
--- a/buildSrc/settings.gradle.kts
+++ /dev/null
@@ -1 +0,0 @@
-rootProject.name = "buildSrc"
diff --git a/buildSrc/src/main/kotlin/Configs.kt b/buildSrc/src/main/kotlin/Configs.kt
deleted file mode 100644
index 5fce0f04..00000000
--- a/buildSrc/src/main/kotlin/Configs.kt
+++ /dev/null
@@ -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
-}
diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts
index 9798f5f9..d6cbbc64 100644
--- a/core/common/build.gradle.kts
+++ b/core/common/build.gradle.kts
@@ -1,37 +1,10 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.kotlin.serialization)
- alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
- alias(libs.plugins.kotlin.compose.compiler)
+ alias(libs.plugins.fast.android.library)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.common"
-
android {
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 {
diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts
index bf997504..f3fc8d86 100644
--- a/core/data/build.gradle.kts
+++ b/core/data/build.gradle.kts
@@ -1,30 +1,9 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
+ alias(libs.plugins.fast.android.library)
}
-group = "dev.meloda.fast.data"
-
android {
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 {
diff --git a/core/database/build.gradle.kts b/core/database/build.gradle.kts
index cd6634f3..4c7cc896 100644
--- a/core/database/build.gradle.kts
+++ b/core/database/build.gradle.kts
@@ -1,36 +1,10 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.com.google.devtools.ksp)
+ alias(libs.plugins.fast.android.library)
+ alias(libs.plugins.fast.android.room)
}
-group = "dev.meloda.fast.database"
-
android {
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 {
diff --git a/core/datastore/build.gradle.kts b/core/datastore/build.gradle.kts
index 8c7785f3..64899285 100644
--- a/core/datastore/build.gradle.kts
+++ b/core/datastore/build.gradle.kts
@@ -1,30 +1,9 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
+ alias(libs.plugins.fast.android.library)
}
-group = "dev.meloda.fast.datastore"
-
android {
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 {
diff --git a/core/designsystem/.gitignore b/core/designsystem/.gitignore
deleted file mode 100644
index 42afabfd..00000000
--- a/core/designsystem/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts
deleted file mode 100644
index 544dd601..00000000
--- a/core/designsystem/build.gradle.kts
+++ /dev/null
@@ -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)
-}
diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts
index a0cdea44..3c8a9297 100644
--- a/core/model/build.gradle.kts
+++ b/core/model/build.gradle.kts
@@ -1,31 +1,10 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.com.google.devtools.ksp)
+ alias(libs.plugins.fast.android.library)
+ alias(libs.plugins.ksp)
}
-group = "dev.meloda.fast.model"
-
android {
- namespace = "dev.meloda.fast.model"
- compileSdk = Configs.compileSdk
-
- defaultConfig {
- minSdk = Configs.minSdk
- }
-
- buildTypes {
- release {
- isMinifyEnabled = false
- }
- }
- compileOptions {
- sourceCompatibility = Configs.java
- targetCompatibility = Configs.java
- }
- kotlinOptions {
- jvmTarget = Configs.java.toString()
- }
+ namespace = "dev.meloda.fast.datastore"
}
dependencies {
diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts
index 88f63b3e..167d47b7 100644
--- a/core/network/build.gradle.kts
+++ b/core/network/build.gradle.kts
@@ -1,31 +1,11 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.com.google.devtools.ksp)
+ alias(libs.plugins.fast.android.library)
+ alias(libs.plugins.ksp)
}
-group = "dev.meloda.fast.network"
-
android {
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 {
buildConfig = true
}
diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts
index a1dea308..52b88a1b 100644
--- a/core/ui/build.gradle.kts
+++ b/core/ui/build.gradle.kts
@@ -1,34 +1,10 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.kotlin.compose.compiler)
+ alias(libs.plugins.fast.android.library)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.ui"
-
android {
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 {
diff --git a/feature/auth/build.gradle.kts b/feature/auth/build.gradle.kts
index 133f68a4..392335d0 100644
--- a/feature/auth/build.gradle.kts
+++ b/feature/auth/build.gradle.kts
@@ -4,21 +4,18 @@ import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
val sdkPackage: String = getLocalProperty("sdkPackage", "\"\"")
val sdkFingerprint: String = getLocalProperty("sdkFingerprint", "\"\"")
+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.com.google.devtools.ksp)
- alias(libs.plugins.kotlin.compose.compiler)
- alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
- alias(libs.plugins.kotlin.serialization)
+ alias(libs.plugins.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.auth"
-
androidComponents {
onVariants { variant ->
variant.buildConfigFields.apply {
@@ -38,55 +35,50 @@ androidComponents {
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 {
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 {
- compose = true
buildConfig = true
}
-
- composeOptions {
- useLiveLiterals = true
- }
}
dependencies {
implementation(projects.core.data)
implementation(projects.core.ui)
- implementation(projects.feature.conversations)
+ implementation(platform(libs.compose.bom))
+ implementation(libs.bundles.compose)
- implementation(projects.feature.auth.login)
- implementation(projects.feature.auth.captcha)
- implementation(projects.feature.auth.validation)
- implementation(projects.feature.auth.userbanned)
+ implementation(libs.coil.compose)
implementation(libs.koin.androidx.compose)
implementation(libs.koin.android)
implementation(libs.androidx.navigation.compose)
implementation(libs.kotlin.serialization)
+
+ implementation(libs.eithernet)
+
+ androidTestImplementation(libs.bundles.compose.ui.test)
}
diff --git a/feature/auth/captcha/.gitignore b/feature/auth/captcha/.gitignore
deleted file mode 100644
index 42afabfd..00000000
--- a/feature/auth/captcha/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/feature/auth/captcha/build.gradle.kts b/feature/auth/captcha/build.gradle.kts
deleted file mode 100644
index cb58c0e6..00000000
--- a/feature/auth/captcha/build.gradle.kts
+++ /dev/null
@@ -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)
-}
diff --git a/feature/auth/captcha/consumer-rules.pro b/feature/auth/captcha/consumer-rules.pro
deleted file mode 100644
index e69de29b..00000000
diff --git a/feature/auth/captcha/proguard-rules.pro b/feature/auth/captcha/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/feature/auth/captcha/proguard-rules.pro
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/feature/auth/login/.gitignore b/feature/auth/login/.gitignore
deleted file mode 100644
index 42afabfd..00000000
--- a/feature/auth/login/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/feature/auth/login/build.gradle.kts b/feature/auth/login/build.gradle.kts
deleted file mode 100644
index 898eca6c..00000000
--- a/feature/auth/login/build.gradle.kts
+++ /dev/null
@@ -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)
-}
diff --git a/feature/auth/login/consumer-rules.pro b/feature/auth/login/consumer-rules.pro
deleted file mode 100644
index e69de29b..00000000
diff --git a/feature/auth/login/proguard-rules.pro b/feature/auth/login/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/feature/auth/login/proguard-rules.pro
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt b/feature/auth/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt
similarity index 100%
rename from feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt
rename to feature/auth/src/androidTest/kotlin/dev/meloda/fast/auth/login/LoginScreenTest.kt
diff --git a/feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt b/feature/auth/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt
similarity index 100%
rename from feature/auth/login/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt
rename to feature/auth/src/androidTest/kotlin/dev/meloda/fast/auth/login/LogoScreenTest.kt
diff --git a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt
index cfc4e43a..308c3bf1 100644
--- a/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt
+++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/AuthGraph.kt
@@ -6,16 +6,16 @@ import androidx.navigation.navigation
import dev.meloda.fast.auth.captcha.navigation.captchaScreen
import dev.meloda.fast.auth.captcha.navigation.navigateToCaptcha
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.navigation.navigateToValidation
import dev.meloda.fast.auth.validation.navigation.setValidationResult
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 java.net.URLEncoder
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/CaptchaViewModel.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/CaptchaViewModel.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/CaptchaViewModel.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/CaptchaViewModel.kt
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/di/CaptchaDI.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/di/CaptchaDI.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/di/CaptchaDI.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/di/CaptchaDI.kt
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaScreenState.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaScreenState.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaScreenState.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaScreenState.kt
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaValidationResult.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaValidationResult.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaValidationResult.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/model/CaptchaValidationResult.kt
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/navigation/CaptchaNavigation.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/navigation/CaptchaNavigation.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/navigation/CaptchaNavigation.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/navigation/CaptchaNavigation.kt
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/presentation/CaptchaScreen.kt
diff --git a/feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/validation/CaptchaValidator.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/validation/CaptchaValidator.kt
similarity index 100%
rename from feature/auth/captcha/src/main/kotlin/dev/meloda/fast/auth/captcha/validation/CaptchaValidator.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/captcha/validation/CaptchaValidator.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt
similarity index 99%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt
index d932a99d..6b182491 100644
--- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt
+++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/LoginViewModel.kt
@@ -70,12 +70,12 @@ interface LoginViewModel {
}
class LoginViewModelImpl(
- private val oAuthUseCase: OAuthUseCase,
+ private val oAuthUseCase: dev.meloda.fast.auth.login.OAuthUseCase,
private val usersUseCase: UsersUseCase,
private val accountsRepository: AccountsRepository,
private val loginValidator: LoginValidator,
private val longPollController: LongPollController
-) : ViewModel(), LoginViewModel {
+) : ViewModel(), dev.meloda.fast.auth.login.LoginViewModel {
override val screenState = MutableStateFlow(LoginScreenState.EMPTY)
override val loginError = MutableStateFlow(null)
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCase.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/OAuthUseCaseImpl.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt
similarity index 85%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt
index e218dba1..4f6fb7c5 100644
--- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt
+++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/di/LoginModule.kt
@@ -12,6 +12,6 @@ import org.koin.dsl.module
val loginModule = module {
singleOf(::LoginValidator)
- viewModelOf(::LoginViewModelImpl) bind LoginViewModel::class
+ viewModelOf(::LoginViewModelImpl) bind dev.meloda.fast.auth.login.LoginViewModel::class
singleOf(::OAuthUseCaseImpl) bind OAuthUseCase::class
}
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/AuthInfo.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/CaptchaArguments.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginError.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginScreenState.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginUserBannedArguments.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationArguments.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/model/LoginValidationResult.kt
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt
similarity index 91%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt
index ca06c374..c12dfa1b 100644
--- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt
+++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/navigation/LoginNavigation.kt
@@ -29,8 +29,8 @@ fun NavGraphBuilder.loginScreen(
navController: NavController
) {
composable { backStackEntry ->
- val viewModel: LoginViewModel =
- backStackEntry.sharedViewModel(navController = navController)
+ val viewModel: dev.meloda.fast.auth.login.LoginViewModel =
+ backStackEntry.sharedViewModel(navController = navController)
val validationCode = backStackEntry.getValidationResult()
val captchaCode = backStackEntry.getCaptchaResult()
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt
similarity index 99%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt
index 5a240d00..b004f221 100644
--- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt
+++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LoginScreen.kt
@@ -76,7 +76,7 @@ fun LoginRoute(
onNavigateToValidation: (LoginValidationArguments) -> Unit,
validationCode: String?,
captchaCode: String?,
- viewModel: LoginViewModel = koinViewModel()
+ viewModel: dev.meloda.fast.auth.login.LoginViewModel = koinViewModel()
) {
val screenState by viewModel.screenState.collectAsStateWithLifecycle()
val isNeedToOpenMain by viewModel.isNeedToOpenMain.collectAsStateWithLifecycle()
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt
similarity index 97%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt
index d56b25ae..9c1fc3fb 100644
--- a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt
+++ b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/presentation/LogoScreen.kt
@@ -40,9 +40,7 @@ import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import dev.meloda.fast.auth.login.BuildConfig
-import dev.meloda.fast.auth.login.LoginViewModel
-import dev.meloda.fast.auth.login.LoginViewModelImpl
+import dev.meloda.fast.auth.BuildConfig
import dev.meloda.fast.ui.components.ActionInvokeDismiss
import dev.meloda.fast.ui.components.MaterialDialog
import dev.meloda.fast.ui.theme.LocalSizeConfig
@@ -53,7 +51,7 @@ import dev.meloda.fast.ui.R as UiR
fun LogoRoute(
onNavigateToMain: () -> Unit,
onGoNextButtonClicked: () -> Unit,
- viewModel: LoginViewModel = koinViewModel()
+ viewModel: dev.meloda.fast.auth.login.LoginViewModel = koinViewModel()
) {
val screenState by viewModel.screenState.collectAsStateWithLifecycle()
val isNeedToOpenMain by viewModel.isNeedToOpenMain.collectAsStateWithLifecycle()
diff --git a/feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt
similarity index 100%
rename from feature/auth/login/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/login/validation/LoginValidator.kt
diff --git a/feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedArguments.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedArguments.kt
similarity index 100%
rename from feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedArguments.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedArguments.kt
diff --git a/feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedScreenState.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedScreenState.kt
similarity index 100%
rename from feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedScreenState.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/model/UserBannedScreenState.kt
diff --git a/feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/navigation/UserBannedNavigation.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/navigation/UserBannedNavigation.kt
similarity index 100%
rename from feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/navigation/UserBannedNavigation.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/navigation/UserBannedNavigation.kt
diff --git a/feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt
similarity index 100%
rename from feature/auth/userbanned/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/userbanned/presentation/UserBannedScreen.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCase.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCase.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCase.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCase.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCaseImpl.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCaseImpl.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCaseImpl.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/AuthUseCaseImpl.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/ValidationViewModel.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/ValidationViewModel.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/ValidationViewModel.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/ValidationViewModel.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/di/ValidationModule.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/di/ValidationModule.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/di/ValidationModule.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/di/ValidationModule.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationArguments.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationArguments.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationArguments.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationArguments.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationScreenState.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationScreenState.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationScreenState.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationScreenState.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationType.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationType.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationType.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationType.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationValidationResult.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationValidationResult.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationValidationResult.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/model/ValidationValidationResult.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/navigation/ValidationNavigation.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/navigation/ValidationNavigation.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/navigation/ValidationNavigation.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/navigation/ValidationNavigation.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/presentation/ValidationScreen.kt
diff --git a/feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/validation/ValidationValidator.kt b/feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/validation/ValidationValidator.kt
similarity index 100%
rename from feature/auth/validation/src/main/kotlin/dev/meloda/fast/auth/validation/validation/ValidationValidator.kt
rename to feature/auth/src/main/kotlin/dev/meloda/fast/auth/validation/validation/ValidationValidator.kt
diff --git a/feature/auth/userbanned/.gitignore b/feature/auth/userbanned/.gitignore
deleted file mode 100644
index 42afabfd..00000000
--- a/feature/auth/userbanned/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/feature/auth/userbanned/build.gradle.kts b/feature/auth/userbanned/build.gradle.kts
deleted file mode 100644
index 069d2533..00000000
--- a/feature/auth/userbanned/build.gradle.kts
+++ /dev/null
@@ -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)
-}
diff --git a/feature/auth/validation/.gitignore b/feature/auth/validation/.gitignore
deleted file mode 100644
index 42afabfd..00000000
--- a/feature/auth/validation/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/feature/auth/validation/build.gradle.kts b/feature/auth/validation/build.gradle.kts
deleted file mode 100644
index 358189b9..00000000
--- a/feature/auth/validation/build.gradle.kts
+++ /dev/null
@@ -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)
-}
diff --git a/feature/auth/validation/consumer-rules.pro b/feature/auth/validation/consumer-rules.pro
deleted file mode 100644
index e69de29b..00000000
diff --git a/feature/auth/validation/proguard-rules.pro b/feature/auth/validation/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/feature/auth/validation/proguard-rules.pro
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/feature/chatmaterials/build.gradle.kts b/feature/chatmaterials/build.gradle.kts
index 373ece5e..fd0b610f 100644
--- a/feature/chatmaterials/build.gradle.kts
+++ b/feature/chatmaterials/build.gradle.kts
@@ -1,41 +1,10 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.kotlin.compose.compiler)
- alias(libs.plugins.kotlin.serialization)
- alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
+ alias(libs.plugins.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.chatmaterials"
-
android {
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 {
diff --git a/feature/conversations/build.gradle.kts b/feature/conversations/build.gradle.kts
index 7a91338a..32c01c9b 100644
--- a/feature/conversations/build.gradle.kts
+++ b/feature/conversations/build.gradle.kts
@@ -1,40 +1,10 @@
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.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.conversations"
-
android {
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 {
diff --git a/feature/friends/build.gradle.kts b/feature/friends/build.gradle.kts
index 5c12a2b5..3878cacb 100644
--- a/feature/friends/build.gradle.kts
+++ b/feature/friends/build.gradle.kts
@@ -1,40 +1,10 @@
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.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.friends"
-
android {
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 {
diff --git a/feature/friends/consumer-rules.pro b/feature/friends/consumer-rules.pro
deleted file mode 100644
index e69de29b..00000000
diff --git a/feature/friends/proguard-rules.pro b/feature/friends/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/feature/friends/proguard-rules.pro
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/feature/languagepicker/build.gradle.kts b/feature/languagepicker/build.gradle.kts
index 6f093e39..51c5fa4a 100644
--- a/feature/languagepicker/build.gradle.kts
+++ b/feature/languagepicker/build.gradle.kts
@@ -1,41 +1,10 @@
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.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.languagepicker"
-
android {
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 {
diff --git a/feature/messageshistory/build.gradle.kts b/feature/messageshistory/build.gradle.kts
index cd5387f7..10c3452f 100644
--- a/feature/messageshistory/build.gradle.kts
+++ b/feature/messageshistory/build.gradle.kts
@@ -1,41 +1,10 @@
plugins {
- alias(libs.plugins.android.library)
- alias(libs.plugins.org.jetbrains.kotlin.android)
- alias(libs.plugins.kotlin.compose.compiler)
- alias(libs.plugins.kotlin.serialization)
- alias(libs.plugins.org.jetbrains.kotlin.plugin.parcelize)
+ alias(libs.plugins.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.messageshistory"
-
android {
namespace = "dev.meloda.fast.messageshistory"
- 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 {
diff --git a/feature/photoviewer/build.gradle.kts b/feature/photoviewer/build.gradle.kts
index 94f6c362..637d6ee7 100644
--- a/feature/photoviewer/build.gradle.kts
+++ b/feature/photoviewer/build.gradle.kts
@@ -1,41 +1,10 @@
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)
+ alias(libs.plugins.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.photoviewer"
-
android {
namespace = "dev.meloda.fast.photoviewer"
- 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 {
diff --git a/feature/profile/build.gradle.kts b/feature/profile/build.gradle.kts
index eda651a9..dae3e68e 100644
--- a/feature/profile/build.gradle.kts
+++ b/feature/profile/build.gradle.kts
@@ -1,42 +1,10 @@
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.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.profile"
-
android {
namespace = "dev.meloda.fast.profile"
- compileSdk = Configs.compileSdk
-
- defaultConfig {
- minSdk = Configs.minSdk
-
- consumerProguardFiles("consumer-rules.pro")
- }
-
- 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 {
diff --git a/feature/profile/consumer-rules.pro b/feature/profile/consumer-rules.pro
deleted file mode 100644
index e69de29b..00000000
diff --git a/feature/profile/proguard-rules.pro b/feature/profile/proguard-rules.pro
deleted file mode 100644
index 481bb434..00000000
--- a/feature/profile/proguard-rules.pro
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/feature/settings/build.gradle.kts b/feature/settings/build.gradle.kts
index 91e0571a..1a76347c 100644
--- a/feature/settings/build.gradle.kts
+++ b/feature/settings/build.gradle.kts
@@ -1,41 +1,10 @@
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.fast.android.feature)
+ alias(libs.plugins.fast.android.library.compose)
}
-group = "dev.meloda.fast.settings"
-
android {
namespace = "dev.meloda.fast.settings"
- 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 {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 41912b63..bca9ba9a 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,4 +1,10 @@
[versions]
+minSdk = "24"
+targetSdk = "35"
+compileSdk = "35"
+versionCode = "4"
+versionName = "0.1.1"
+
agp = "8.5.2"
converterMoshi = "2.11.0"
eithernet = "1.9.0"
@@ -91,6 +97,13 @@ koin-android-test = { module = "io.insert-koin:koin-android-test", version.ref =
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" }
koin-androidx-compose-navigation = { module = "io.insert-koin:koin-androidx-compose-navigation", version.ref = "koin" }
+# build-logic dependencies
+android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" }
+compose-gradlePlugin = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" }
+kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
+ksp-gradlePlugin = { group = "com.google.devtools.ksp", name = "com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
+room-gradlePlugin = { group = "androidx.room", name = "room-gradle-plugin", version.ref = "room" }
+
[bundles]
compose = [
"compose-material3",
@@ -103,12 +116,29 @@ compose = [
"compose-runtime-saveable"
]
compose-ui-test = ["compose-ui-test-junit4", "compose-ui-test-manifest"]
+nanokt = [
+ "nanokt",
+ "nanokt-android",
+ "nanokt-jvm"
+]
[plugins]
-com-android-application = { id = "com.android.application", version.ref = "agp" }
-org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
-kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
-com-google-devtools-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
-org-jetbrains-kotlin-plugin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
+android-application = { id = "com.android.application", version.ref = "agp" }
android-library = { id = "com.android.library", version.ref = "agp" }
+org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
+compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
+kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
+kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+room = { id = "androidx.room", version.ref = "room" }
+ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
+
+#project plugins
+fast-android-application = { id = "fast.android.application", version = "unspecified" }
+fast-android-application-compose = { id = "fast.android.application.compose", version = "unspecified" }
+fast-android-feature = { id = "fast.android.feature", version = "unspecified" }
+fast-android-library = { id = "fast.android.library", version = "unspecified" }
+fast-android-library-compose = { id = "fast.android.library.compose", version = "unspecified" }
+fast-android-room = { id = "fast.android.room", version = "unspecified" }
+fast-android-test = { id = "fast.android.test", version = "unspecified" }
+fast-jvm-library = { id = "fast.jvm.library", version = "unspecified" }
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 5bf2267c..a22f39d6 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,6 +1,7 @@
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
pluginManagement {
+ includeBuild("build-logic")
repositories {
google()
mavenCentral()
@@ -22,7 +23,6 @@ include(":core:network")
include(":core:data")
include(":core:database")
include(":core:datastore")
-include(":core:designsystem")
include(":core:ui")
include(":core:common")
include(":core:model")
@@ -33,9 +33,5 @@ include(":feature:chatmaterials")
include(":feature:languagepicker")
include(":feature:photoviewer")
include(":feature:settings")
-include(":feature:auth:login")
-include(":feature:auth:validation")
-include(":feature:auth:captcha")
-include(":feature:auth:userbanned")
include(":feature:friends")
include(":feature:profile")