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