From 8f70464fa35bd631e34a514fe4da8ac53c9b29ae Mon Sep 17 00:00:00 2001 From: Eric Ampire Date: Fri, 3 Sep 2021 10:47:27 +0200 Subject: [PATCH] Setup the template project --- app/build.gradle.kts | 18 ++----- app/src/main/AndroidManifest.xml | 24 ++++++++++ .../androidstudycase/app/di/AppModule.kt | 24 ++++++++++ .../app/di/CoroutineModule.kt | 30 ++++++++++++ .../app/di/ViewModelModule.kt | 11 +++++ .../app/initializer/TimberInitializer.kt | 18 +++++++ .../androidstudycase/ui/theme/Theme.kt | 6 +-- build.gradle.kts | 2 - data/.gitignore | 1 + data/build.gradle.kts | 48 +++++++++++++++++++ data/consumer-rules.pro | 0 data/proguard-rules.pro | 21 ++++++++ data/src/main/AndroidManifest.xml | 4 ++ .../data/datasource/user/UserDataSource.kt | 5 ++ .../data/di/DataSourceModule.kt | 6 +++ .../data/di/RepositoryModule.kt | 6 +++ .../data/repository/UserRepositoryImpl.kt | 11 +++++ .../androidstudycase/data}/ExampleUnitTest.kt | 2 +- domain/.gitignore | 1 + domain/build.gradle.kts | 48 +++++++++++++++++++ domain/consumer-rules.pro | 0 domain/proguard-rules.pro | 21 ++++++++ domain/src/main/AndroidManifest.xml | 4 ++ .../domain/di/UseCaseModule.kt | 6 +++ .../androidstudycase/domain/entity/User.kt | 7 +++ .../domain/extension/UserExtension.kt | 2 + .../androidstudycase/domain/mapper/Mapper.kt | 5 ++ .../domain/repository/UserRepository.kt | 6 +++ .../domain/usecase/UserUseCase.kt | 2 + .../domain/ExampleUnitTest.kt | 18 +++++++ settings.gradle.kts | 12 +++-- .../util/DefaultDispatcher.kt | 3 +- .../android/androidstudycase}/util/Event.kt | 2 +- .../android/androidstudycase}/util/Result.kt | 2 +- .../util/usecase/CoroutineUseCase.kt | 5 +- .../util/usecase/FlowUseCase.kt | 4 +- .../androidstudycase/util/ExampleUnitTest.kt | 18 +++++++ versions.properties | 2 +- 38 files changed, 371 insertions(+), 34 deletions(-) create mode 100644 app/src/main/java/com/ericampire/android/androidstudycase/app/di/AppModule.kt create mode 100644 app/src/main/java/com/ericampire/android/androidstudycase/app/di/CoroutineModule.kt create mode 100644 app/src/main/java/com/ericampire/android/androidstudycase/app/di/ViewModelModule.kt create mode 100644 app/src/main/java/com/ericampire/android/androidstudycase/app/initializer/TimberInitializer.kt create mode 100644 data/.gitignore create mode 100644 data/build.gradle.kts create mode 100644 data/consumer-rules.pro create mode 100644 data/proguard-rules.pro create mode 100644 data/src/main/AndroidManifest.xml create mode 100644 data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/user/UserDataSource.kt create mode 100644 data/src/main/java/com/ericampire/android/androidstudycase/data/di/DataSourceModule.kt create mode 100644 data/src/main/java/com/ericampire/android/androidstudycase/data/di/RepositoryModule.kt create mode 100644 data/src/main/java/com/ericampire/android/androidstudycase/data/repository/UserRepositoryImpl.kt rename {util/src/test/java/org/zxconnect/android/beserve/util => data/src/test/java/com/ericampire/android/androidstudycase/data}/ExampleUnitTest.kt (86%) create mode 100644 domain/.gitignore create mode 100644 domain/build.gradle.kts create mode 100644 domain/consumer-rules.pro create mode 100644 domain/proguard-rules.pro create mode 100644 domain/src/main/AndroidManifest.xml create mode 100644 domain/src/main/java/com/ericampire/android/androidstudycase/domain/di/UseCaseModule.kt create mode 100644 domain/src/main/java/com/ericampire/android/androidstudycase/domain/entity/User.kt create mode 100644 domain/src/main/java/com/ericampire/android/androidstudycase/domain/extension/UserExtension.kt create mode 100644 domain/src/main/java/com/ericampire/android/androidstudycase/domain/mapper/Mapper.kt create mode 100644 domain/src/main/java/com/ericampire/android/androidstudycase/domain/repository/UserRepository.kt create mode 100644 domain/src/main/java/com/ericampire/android/androidstudycase/domain/usecase/UserUseCase.kt create mode 100644 domain/src/test/java/com/ericampire/android/androidstudycase/domain/ExampleUnitTest.kt rename util/src/main/java/{org/zxconnect/android/beserve => com/ericampire/android/androidstudycase}/util/DefaultDispatcher.kt (89%) rename util/src/main/java/{org/zxconnect/android/beserve => com/ericampire/android/androidstudycase}/util/Event.kt (94%) rename util/src/main/java/{org/zxconnect/android/beserve => com/ericampire/android/androidstudycase}/util/Result.kt (94%) rename util/src/main/java/{org/zxconnect/android/beserve => com/ericampire/android/androidstudycase}/util/usecase/CoroutineUseCase.kt (89%) rename util/src/main/java/{org/zxconnect/android/beserve => com/ericampire/android/androidstudycase}/util/usecase/FlowUseCase.kt (85%) create mode 100644 util/src/test/java/com/ericampire/android/androidstudycase/util/ExampleUnitTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e35f997..835ed50 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,7 +7,6 @@ plugins { kotlin("kapt") id("dagger.hilt.android.plugin") id("kotlin-android") - id("com.google.devtools.ksp") version "1.5.21-1.0.0-beta07" } kapt { @@ -77,11 +76,13 @@ android { dependencies { - implementation(project(":util")) + implementation(project(":data")) + implementation(project(":i18n")) implementation(Libs.activity_compose) implementation(Libs.navigation_compose) implementation(Libs.core_ktx) + implementation(Libs.lifecycle_runtime_ktx) implementation(Libs.preference_ktx) implementation(Libs.appcompat) implementation(Libs.startup_runtime) @@ -104,8 +105,6 @@ dependencies { implementation(Libs.accompanist_placeholder) implementation(Libs.accompanist_navigation_animation) - implementation(kotlin("reflect")) - implementation(platform(Libs.kotlin_coroutine_bom)) testImplementation(Libs.kotlin_coroutine_test) @@ -113,23 +112,16 @@ dependencies { implementation(Libs.hilt_navigation_compose) kapt(Libs.hilt_android_compiler) - implementation(Libs.lifecycle_runtime_ktx) - testImplementation(Libs.junit_jupiter_api) testImplementation(Libs.junit_jupiter_engine) - implementation(Libs.koin_android) - implementation(Libs.koin_androidx_compose) - implementation(Libs.koin_androidx_workmanager) - testImplementation(Libs.koin_test_junit5) - implementation(Libs.ksp_api) implementation(Libs.orbit_mvi_core) implementation(Libs.orbit_mvi_viewmodel) testImplementation(Libs.orbit_mvi_test) - ksp(Libs.room_compiler) + kapt(Libs.room_compiler) implementation(Libs.room_runtime) testImplementation(Libs.room_testing) @@ -137,6 +129,4 @@ dependencies { androidTestImplementation(Libs.mockk_android) debugImplementation(Libs.leakcanary_android) - - implementation(Libs.timber) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 99f16f0..9b09126 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/app/di/AppModule.kt b/app/src/main/java/com/ericampire/android/androidstudycase/app/di/AppModule.kt new file mode 100644 index 0000000..2bfd792 --- /dev/null +++ b/app/src/main/java/com/ericampire/android/androidstudycase/app/di/AppModule.kt @@ -0,0 +1,24 @@ +package com.ericampire.android.androidstudycase.app.di + +import android.content.Context +import android.content.SharedPreferences +import androidx.preference.PreferenceManager +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object AppModule { + + @Provides + @Singleton + fun provideSharedPreference( + @ApplicationContext context: Context + ): SharedPreferences { + return PreferenceManager.getDefaultSharedPreferences(context) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/app/di/CoroutineModule.kt b/app/src/main/java/com/ericampire/android/androidstudycase/app/di/CoroutineModule.kt new file mode 100644 index 0000000..83f3cd9 --- /dev/null +++ b/app/src/main/java/com/ericampire/android/androidstudycase/app/di/CoroutineModule.kt @@ -0,0 +1,30 @@ +package com.ericampire.android.androidstudycase.app.di + + +import com.ericampire.android.androidstudycase.util.IoDispatcher +import com.ericampire.android.androidstudycase.util.MainDispatcher +import com.ericampire.android.androidstudycase.util.MainImmediateDispatcher +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers + + +@Module +@InstallIn(SingletonComponent::class) +object CoroutineModule { + + @Provides + @IoDispatcher + fun providesIoDispatcher(): CoroutineDispatcher = Dispatchers.IO + + @Provides + @MainDispatcher + fun providesMainDispatcher(): CoroutineDispatcher = Dispatchers.Main + + @Provides + @MainImmediateDispatcher + fun providesMainImmediateDispatcher(): CoroutineDispatcher = Dispatchers.Main.immediate +} \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/app/di/ViewModelModule.kt b/app/src/main/java/com/ericampire/android/androidstudycase/app/di/ViewModelModule.kt new file mode 100644 index 0000000..c1c5952 --- /dev/null +++ b/app/src/main/java/com/ericampire/android/androidstudycase/app/di/ViewModelModule.kt @@ -0,0 +1,11 @@ +package com.ericampire.android.androidstudycase.app.di + +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.android.components.ViewModelComponent + +@Module +@InstallIn(ViewModelComponent::class) +object ViewModelModule { + +} \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/app/initializer/TimberInitializer.kt b/app/src/main/java/com/ericampire/android/androidstudycase/app/initializer/TimberInitializer.kt new file mode 100644 index 0000000..391bc5e --- /dev/null +++ b/app/src/main/java/com/ericampire/android/androidstudycase/app/initializer/TimberInitializer.kt @@ -0,0 +1,18 @@ +package com.ericampire.android.androidstudycase.app.initializer + +import android.content.Context +import androidx.startup.Initializer +import com.ericampire.android.androidstudycase.BuildConfig +import timber.log.Timber + +class TimberInitializer : Initializer { + override fun create(context: Context) { + if (BuildConfig.DEBUG) { + Timber.plant(Timber.DebugTree()) + } + } + + override fun dependencies(): MutableList>> { + return mutableListOf() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ericampire/android/androidstudycase/ui/theme/Theme.kt b/app/src/main/java/com/ericampire/android/androidstudycase/ui/theme/Theme.kt index a4b3d9d..e7e83fc 100644 --- a/app/src/main/java/com/ericampire/android/androidstudycase/ui/theme/Theme.kt +++ b/app/src/main/java/com/ericampire/android/androidstudycase/ui/theme/Theme.kt @@ -5,6 +5,7 @@ import androidx.compose.material.MaterialTheme import androidx.compose.material.darkColors import androidx.compose.material.lightColors import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color private val DarkColorPalette = darkColors( primary = Purple200, @@ -15,16 +16,13 @@ private val DarkColorPalette = darkColors( private val LightColorPalette = lightColors( primary = Purple500, primaryVariant = Purple700, - secondary = Teal200 - - /* Other default colors to override + secondary = Teal200, background = Color.White, surface = Color.White, onPrimary = Color.White, onSecondary = Color.Black, onBackground = Color.Black, onSurface = Color.Black, - */ ) @Composable diff --git a/build.gradle.kts b/build.gradle.kts index ca9abcc..05042a9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,8 +11,6 @@ buildscript { classpath(Libs.kotlin_gradle_plugin) classpath(Libs.gradle_plugin) classpath(Libs.hilt_gradle_plugin) - classpath(Libs.play_service_plugin) - classpath(Libs.firebase_crashlytics_plugin) } } diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/data/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/data/build.gradle.kts b/data/build.gradle.kts new file mode 100644 index 0000000..8e74804 --- /dev/null +++ b/data/build.gradle.kts @@ -0,0 +1,48 @@ +plugins { + id("com.android.library") + id("kotlin-android") + kotlin("kapt") +} + +android { + compileSdk = Apps.compileSdk + buildToolsVersion = Apps.buildToolsVersion + + defaultConfig { + minSdk = Apps.minSdk + targetSdk = Apps.targetSdk + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } +} + +dependencies { + + api(project(":domain")) + implementation(Libs.core_ktx) + + api(platform(Libs.kotlin_coroutine_bom)) + api(Libs.kotlin_coroutine_core) + + testImplementation(Libs.junit_jupiter_api) + testImplementation(Libs.junit_jupiter_engine) + + testImplementation(Libs.mockk_core) + + api(Libs.hilt_android) + kapt(Libs.hilt_android_compiler) + + api(Libs.timber) +} \ No newline at end of file diff --git a/data/consumer-rules.pro b/data/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/data/proguard-rules.pro b/data/proguard-rules.pro new file mode 100644 index 0000000..ff59496 --- /dev/null +++ b/data/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# 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/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml new file mode 100644 index 0000000..98b449b --- /dev/null +++ b/data/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/user/UserDataSource.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/user/UserDataSource.kt new file mode 100644 index 0000000..7ed87b4 --- /dev/null +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/datasource/user/UserDataSource.kt @@ -0,0 +1,5 @@ +package com.ericampire.android.androidstudycase.data.datasource.user + + +interface UserDataSource { +} \ No newline at end of file diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/di/DataSourceModule.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/di/DataSourceModule.kt new file mode 100644 index 0000000..178d8fc --- /dev/null +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/di/DataSourceModule.kt @@ -0,0 +1,6 @@ +package com.ericampire.android.androidstudycase.data.di + + +object DataSourceModule { + +} \ No newline at end of file diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/di/RepositoryModule.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/di/RepositoryModule.kt new file mode 100644 index 0000000..d6032ed --- /dev/null +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/di/RepositoryModule.kt @@ -0,0 +1,6 @@ +package com.ericampire.android.androidstudycase.data.di + + +object RepositoryModule { + +} \ No newline at end of file diff --git a/data/src/main/java/com/ericampire/android/androidstudycase/data/repository/UserRepositoryImpl.kt b/data/src/main/java/com/ericampire/android/androidstudycase/data/repository/UserRepositoryImpl.kt new file mode 100644 index 0000000..729ba4c --- /dev/null +++ b/data/src/main/java/com/ericampire/android/androidstudycase/data/repository/UserRepositoryImpl.kt @@ -0,0 +1,11 @@ +package com.ericampire.android.androidstudycase.data.repository + +import com.ericampire.android.androidstudycase.data.datasource.user.UserDataSource +import com.ericampire.android.androidstudycase.domain.repository.UserRepository +import javax.inject.Inject + + +class UserRepositoryImpl @Inject constructor( + private val dataSource: UserDataSource +) : UserRepository { +} \ No newline at end of file diff --git a/util/src/test/java/org/zxconnect/android/beserve/util/ExampleUnitTest.kt b/data/src/test/java/com/ericampire/android/androidstudycase/data/ExampleUnitTest.kt similarity index 86% rename from util/src/test/java/org/zxconnect/android/beserve/util/ExampleUnitTest.kt rename to data/src/test/java/com/ericampire/android/androidstudycase/data/ExampleUnitTest.kt index 09669d1..a8e087c 100644 --- a/util/src/test/java/org/zxconnect/android/beserve/util/ExampleUnitTest.kt +++ b/data/src/test/java/com/ericampire/android/androidstudycase/data/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package org.zxconnect.android.beserve.util +package com.ericampire.android.androidstudycase.data import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test diff --git a/domain/.gitignore b/domain/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/domain/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts new file mode 100644 index 0000000..1fdc2cc --- /dev/null +++ b/domain/build.gradle.kts @@ -0,0 +1,48 @@ +plugins { + id("com.android.library") + id("kotlin-android") + kotlin("kapt") +} + +android { + compileSdk = Apps.compileSdk + buildToolsVersion = Apps.buildToolsVersion + + defaultConfig { + minSdk = Apps.minSdk + targetSdk = Apps.targetSdk + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("consumer-rules.pro") + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } +} + +dependencies { + + api(project(":util")) + implementation(Libs.core_ktx) + + api(platform(Libs.kotlin_coroutine_bom)) + api(Libs.kotlin_coroutine_core) + + testImplementation(Libs.junit_jupiter_api) + testImplementation(Libs.junit_jupiter_engine) + + testImplementation(Libs.mockk_core) + + api(Libs.hilt_android) + kapt(Libs.hilt_android_compiler) + + api(Libs.timber) +} \ No newline at end of file diff --git a/domain/consumer-rules.pro b/domain/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/domain/proguard-rules.pro b/domain/proguard-rules.pro new file mode 100644 index 0000000..ff59496 --- /dev/null +++ b/domain/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle.kts. +# +# 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/domain/src/main/AndroidManifest.xml b/domain/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b1335aa --- /dev/null +++ b/domain/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/domain/src/main/java/com/ericampire/android/androidstudycase/domain/di/UseCaseModule.kt b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/di/UseCaseModule.kt new file mode 100644 index 0000000..2cdce85 --- /dev/null +++ b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/di/UseCaseModule.kt @@ -0,0 +1,6 @@ +package com.ericampire.android.androidstudycase.domain.di + + +object UseCaseModule { + +} \ No newline at end of file diff --git a/domain/src/main/java/com/ericampire/android/androidstudycase/domain/entity/User.kt b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/entity/User.kt new file mode 100644 index 0000000..4e78461 --- /dev/null +++ b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/entity/User.kt @@ -0,0 +1,7 @@ +package com.ericampire.android.androidstudycase.domain.entity + + +data class User( + val uid: String = "", + + ) diff --git a/domain/src/main/java/com/ericampire/android/androidstudycase/domain/extension/UserExtension.kt b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/extension/UserExtension.kt new file mode 100644 index 0000000..bf6aa47 --- /dev/null +++ b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/extension/UserExtension.kt @@ -0,0 +1,2 @@ +package com.ericampire.android.androidstudycase.domain.extension + diff --git a/domain/src/main/java/com/ericampire/android/androidstudycase/domain/mapper/Mapper.kt b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/mapper/Mapper.kt new file mode 100644 index 0000000..f3d6a82 --- /dev/null +++ b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/mapper/Mapper.kt @@ -0,0 +1,5 @@ +package com.ericampire.android.androidstudycase.domain.mapper + +interface Mapper { + fun map(input: I): O +} \ No newline at end of file diff --git a/domain/src/main/java/com/ericampire/android/androidstudycase/domain/repository/UserRepository.kt b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/repository/UserRepository.kt new file mode 100644 index 0000000..94c87f0 --- /dev/null +++ b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/repository/UserRepository.kt @@ -0,0 +1,6 @@ +package com.ericampire.android.androidstudycase.domain.repository + + +interface UserRepository { + +} \ No newline at end of file diff --git a/domain/src/main/java/com/ericampire/android/androidstudycase/domain/usecase/UserUseCase.kt b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/usecase/UserUseCase.kt new file mode 100644 index 0000000..1254eb1 --- /dev/null +++ b/domain/src/main/java/com/ericampire/android/androidstudycase/domain/usecase/UserUseCase.kt @@ -0,0 +1,2 @@ +package com.ericampire.android.androidstudycase.domain.usecase + diff --git a/domain/src/test/java/com/ericampire/android/androidstudycase/domain/ExampleUnitTest.kt b/domain/src/test/java/com/ericampire/android/androidstudycase/domain/ExampleUnitTest.kt new file mode 100644 index 0000000..63e6c04 --- /dev/null +++ b/domain/src/test/java/com/ericampire/android/androidstudycase/domain/ExampleUnitTest.kt @@ -0,0 +1,18 @@ +package com.ericampire.android.androidstudycase.domain + +import org.junit.jupiter.api.Assertions.assertEquals + +import org.junit.jupiter.api.Test + + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 7156dd6..65a9c1b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,13 +8,15 @@ refreshVersions { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - jcenter() // Warning: this repository is going to shut down soon - } + repositories { + google() + mavenCentral() + jcenter() // Warning: this repository is going to shut down soon + } } rootProject.name = "android-study-case" include(":app") include(":util") include(":i18n") +include(":data") +include(":domain") diff --git a/util/src/main/java/org/zxconnect/android/beserve/util/DefaultDispatcher.kt b/util/src/main/java/com/ericampire/android/androidstudycase/util/DefaultDispatcher.kt similarity index 89% rename from util/src/main/java/org/zxconnect/android/beserve/util/DefaultDispatcher.kt rename to util/src/main/java/com/ericampire/android/androidstudycase/util/DefaultDispatcher.kt index 8cab42a..da722e5 100644 --- a/util/src/main/java/org/zxconnect/android/beserve/util/DefaultDispatcher.kt +++ b/util/src/main/java/com/ericampire/android/androidstudycase/util/DefaultDispatcher.kt @@ -1,4 +1,5 @@ -package org.zxconnect.android.beserve.util +package com.ericampire.android.androidstudycase.util + import javax.inject.Qualifier diff --git a/util/src/main/java/org/zxconnect/android/beserve/util/Event.kt b/util/src/main/java/com/ericampire/android/androidstudycase/util/Event.kt similarity index 94% rename from util/src/main/java/org/zxconnect/android/beserve/util/Event.kt rename to util/src/main/java/com/ericampire/android/androidstudycase/util/Event.kt index 075be71..19f8296 100644 --- a/util/src/main/java/org/zxconnect/android/beserve/util/Event.kt +++ b/util/src/main/java/com/ericampire/android/androidstudycase/util/Event.kt @@ -1,4 +1,4 @@ -package org.zxconnect.android.beserve.util +package com.ericampire.android.androidstudycase.util import androidx.lifecycle.Observer diff --git a/util/src/main/java/org/zxconnect/android/beserve/util/Result.kt b/util/src/main/java/com/ericampire/android/androidstudycase/util/Result.kt similarity index 94% rename from util/src/main/java/org/zxconnect/android/beserve/util/Result.kt rename to util/src/main/java/com/ericampire/android/androidstudycase/util/Result.kt index 7614a19..490d432 100644 --- a/util/src/main/java/org/zxconnect/android/beserve/util/Result.kt +++ b/util/src/main/java/com/ericampire/android/androidstudycase/util/Result.kt @@ -1,4 +1,4 @@ -package org.zxconnect.android.beserve.util +package com.ericampire.android.androidstudycase.util import androidx.lifecycle.MutableLiveData diff --git a/util/src/main/java/org/zxconnect/android/beserve/util/usecase/CoroutineUseCase.kt b/util/src/main/java/com/ericampire/android/androidstudycase/util/usecase/CoroutineUseCase.kt similarity index 89% rename from util/src/main/java/org/zxconnect/android/beserve/util/usecase/CoroutineUseCase.kt rename to util/src/main/java/com/ericampire/android/androidstudycase/util/usecase/CoroutineUseCase.kt index dd5ea05..24053d6 100644 --- a/util/src/main/java/org/zxconnect/android/beserve/util/usecase/CoroutineUseCase.kt +++ b/util/src/main/java/com/ericampire/android/androidstudycase/util/usecase/CoroutineUseCase.kt @@ -1,8 +1,9 @@ -package org.zxconnect.android.beserve.util.usecase +package com.ericampire.android.androidstudycase.util.usecase + +import com.ericampire.android.androidstudycase.util.Result import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext -import org.zxconnect.android.beserve.util.Result import timber.log.Timber diff --git a/util/src/main/java/org/zxconnect/android/beserve/util/usecase/FlowUseCase.kt b/util/src/main/java/com/ericampire/android/androidstudycase/util/usecase/FlowUseCase.kt similarity index 85% rename from util/src/main/java/org/zxconnect/android/beserve/util/usecase/FlowUseCase.kt rename to util/src/main/java/com/ericampire/android/androidstudycase/util/usecase/FlowUseCase.kt index 6822028..5aedac4 100644 --- a/util/src/main/java/org/zxconnect/android/beserve/util/usecase/FlowUseCase.kt +++ b/util/src/main/java/com/ericampire/android/androidstudycase/util/usecase/FlowUseCase.kt @@ -1,10 +1,10 @@ -package org.zxconnect.android.beserve.util.usecase +package com.ericampire.android.androidstudycase.util.usecase +import com.ericampire.android.androidstudycase.util.Result import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.flowOn -import org.zxconnect.android.beserve.util.Result /** * Executes business logic in its execute method and keep posting updates to the result as diff --git a/util/src/test/java/com/ericampire/android/androidstudycase/util/ExampleUnitTest.kt b/util/src/test/java/com/ericampire/android/androidstudycase/util/ExampleUnitTest.kt new file mode 100644 index 0000000..82f7de7 --- /dev/null +++ b/util/src/test/java/com/ericampire/android/androidstudycase/util/ExampleUnitTest.kt @@ -0,0 +1,18 @@ +package com.ericampire.android.androidstudycase.util + + +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/versions.properties b/versions.properties index 5d15cb5..7f24f98 100644 --- a/versions.properties +++ b/versions.properties @@ -7,7 +7,7 @@ #### suppress inspection "SpellCheckingInspection" for whole file #### suppress inspection "UnusedProperty" for whole file -plugin.android=7.0.1 +plugin.android=7.0.2 version.androidx.activity=1.3.0-alpha08 version.androidx.preference=1.1.1 version.androidx.appcompat=1.3.0