From 8fee0c3a3db3766622175a80a31ac08d77630254 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sun, 3 Apr 2022 17:21:18 +0500 Subject: [PATCH] Reorganize code --- .../java/gq/kirmanak/mealient/data/AppDb.kt | 2 +- .../data/auth/impl/AuthDataSourceImpl.kt | 4 +-- .../data/auth/impl/AuthStorageImpl.kt | 4 +-- .../data/disclaimer/DisclaimerStorageImpl.kt | 2 +- .../data/{impl => network}/ErrorDetail.kt | 2 +- .../data/{impl => network}/OkHttpBuilder.kt | 2 +- .../data/{impl => network}/RetrofitBuilder.kt | 2 +- .../data/network/RetrofitServiceFactory.kt | 1 - .../data/recipes/db/RecipeStorageImpl.kt | 8 +++--- .../java/gq/kirmanak/mealient/di/AppModule.kt | 15 ----------- .../gq/kirmanak/mealient/di/AuthModule.kt | 5 +--- .../gq/kirmanak/mealient/di/NetworkModule.kt | 27 +++++++++++++++++++ .../gq/kirmanak/mealient/di/RecipeModule.kt | 2 +- .../util => extensions}/NetworkExtensions.kt | 2 +- .../RemoteToLocalMappings.kt | 2 +- .../util => extensions}/RoomTypeConverters.kt | 2 +- .../SharedPrefExtensions.kt | 2 +- .../data/auth/impl/AuthDataSourceImplTest.kt | 4 +-- .../data/impl/RoomTypeConvertersTest.kt | 2 +- 19 files changed, 49 insertions(+), 41 deletions(-) rename app/src/main/java/gq/kirmanak/mealient/data/{impl => network}/ErrorDetail.kt (80%) rename app/src/main/java/gq/kirmanak/mealient/data/{impl => network}/OkHttpBuilder.kt (93%) rename app/src/main/java/gq/kirmanak/mealient/data/{impl => network}/RetrofitBuilder.kt (95%) create mode 100644 app/src/main/java/gq/kirmanak/mealient/di/NetworkModule.kt rename app/src/main/java/gq/kirmanak/mealient/{data/impl/util => extensions}/NetworkExtensions.kt (93%) rename app/src/main/java/gq/kirmanak/mealient/{data/impl/util => extensions}/RemoteToLocalMappings.kt (97%) rename app/src/main/java/gq/kirmanak/mealient/{data/impl/util => extensions}/RoomTypeConverters.kt (93%) rename app/src/main/java/gq/kirmanak/mealient/{data/impl/util => extensions}/SharedPrefExtensions.kt (97%) diff --git a/app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt b/app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt index 9a6aab4..e08b8e6 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/AppDb.kt @@ -3,9 +3,9 @@ package gq.kirmanak.mealient.data import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.TypeConverters -import gq.kirmanak.mealient.data.impl.util.RoomTypeConverters import gq.kirmanak.mealient.data.recipes.db.RecipeDao import gq.kirmanak.mealient.data.recipes.db.entity.* +import gq.kirmanak.mealient.extensions.RoomTypeConverters @Database( version = 1, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImpl.kt index c587045..a25fcde 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImpl.kt @@ -2,9 +2,9 @@ package gq.kirmanak.mealient.data.auth.impl import gq.kirmanak.mealient.data.auth.AuthDataSource import gq.kirmanak.mealient.data.auth.impl.AuthenticationError.* -import gq.kirmanak.mealient.data.impl.ErrorDetail -import gq.kirmanak.mealient.data.impl.util.decodeErrorBodyOrNull +import gq.kirmanak.mealient.data.network.ErrorDetail import gq.kirmanak.mealient.data.network.ServiceFactory +import gq.kirmanak.mealient.extensions.decodeErrorBodyOrNull import kotlinx.coroutines.CancellationException import kotlinx.serialization.SerializationException import kotlinx.serialization.json.Json diff --git a/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImpl.kt index 5399314..9bfc7b8 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthStorageImpl.kt @@ -3,8 +3,8 @@ package gq.kirmanak.mealient.data.auth.impl import android.content.SharedPreferences import androidx.core.content.edit import gq.kirmanak.mealient.data.auth.AuthStorage -import gq.kirmanak.mealient.data.impl.util.changesFlow -import gq.kirmanak.mealient.data.impl.util.getStringOrNull +import gq.kirmanak.mealient.extensions.changesFlow +import gq.kirmanak.mealient.extensions.getStringOrNull import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import timber.log.Timber diff --git a/app/src/main/java/gq/kirmanak/mealient/data/disclaimer/DisclaimerStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/disclaimer/DisclaimerStorageImpl.kt index b979be8..823a977 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/disclaimer/DisclaimerStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/disclaimer/DisclaimerStorageImpl.kt @@ -1,7 +1,7 @@ package gq.kirmanak.mealient.data.disclaimer import android.content.SharedPreferences -import gq.kirmanak.mealient.data.impl.util.getBooleanOrFalse +import gq.kirmanak.mealient.extensions.getBooleanOrFalse import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/ErrorDetail.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/ErrorDetail.kt similarity index 80% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/ErrorDetail.kt rename to app/src/main/java/gq/kirmanak/mealient/data/network/ErrorDetail.kt index c7a1df0..674de44 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/ErrorDetail.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/ErrorDetail.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl +package gq.kirmanak.mealient.data.network import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/OkHttpBuilder.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/OkHttpBuilder.kt similarity index 93% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/OkHttpBuilder.kt rename to app/src/main/java/gq/kirmanak/mealient/data/network/OkHttpBuilder.kt index df5d1bf..feae5e9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/OkHttpBuilder.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/OkHttpBuilder.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl +package gq.kirmanak.mealient.data.network import okhttp3.Interceptor import okhttp3.OkHttpClient diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/RetrofitBuilder.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitBuilder.kt similarity index 95% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/RetrofitBuilder.kt rename to app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitBuilder.kt index a22242a..0c5ae74 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/RetrofitBuilder.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitBuilder.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl +package gq.kirmanak.mealient.data.network import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import kotlinx.serialization.ExperimentalSerializationApi diff --git a/app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactory.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactory.kt index 17e973f..b08ed87 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactory.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/RetrofitServiceFactory.kt @@ -1,6 +1,5 @@ package gq.kirmanak.mealient.data.network -import gq.kirmanak.mealient.data.impl.RetrofitBuilder import timber.log.Timber inline fun RetrofitBuilder.createServiceFactory() = diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt index 2a55d28..be0b13c 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/db/RecipeStorageImpl.kt @@ -3,14 +3,14 @@ package gq.kirmanak.mealient.data.recipes.db import androidx.paging.PagingSource import androidx.room.withTransaction import gq.kirmanak.mealient.data.AppDb -import gq.kirmanak.mealient.data.impl.util.recipeEntity -import gq.kirmanak.mealient.data.impl.util.toRecipeEntity -import gq.kirmanak.mealient.data.impl.util.toRecipeIngredientEntity -import gq.kirmanak.mealient.data.impl.util.toRecipeInstructionEntity import gq.kirmanak.mealient.data.recipes.db.entity.* import gq.kirmanak.mealient.data.recipes.impl.FullRecipeInfo import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeResponse import gq.kirmanak.mealient.data.recipes.network.response.GetRecipeSummaryResponse +import gq.kirmanak.mealient.extensions.recipeEntity +import gq.kirmanak.mealient.extensions.toRecipeEntity +import gq.kirmanak.mealient.extensions.toRecipeIngredientEntity +import gq.kirmanak.mealient.extensions.toRecipeInstructionEntity import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt index e3de864..3418f3e 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt @@ -10,9 +10,6 @@ import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import gq.kirmanak.mealient.data.AppDb -import gq.kirmanak.mealient.data.impl.OkHttpBuilder -import kotlinx.serialization.json.Json -import okhttp3.OkHttpClient import javax.inject.Singleton @Module @@ -27,16 +24,4 @@ object AppModule { @Singleton fun createSharedPreferences(@ApplicationContext context: Context): SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) - - @Provides - @Singleton - fun createOkHttp(okHttpBuilder: OkHttpBuilder): OkHttpClient = - okHttpBuilder.buildOkHttp() - - @Provides - @Singleton - fun createJson(): Json = Json { - coerceInputValues = true - ignoreUnknownKeys = true - } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/di/AuthModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/AuthModule.kt index 4c1a274..2ddd619 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AuthModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AuthModule.kt @@ -1,12 +1,9 @@ package gq.kirmanak.mealient.di -import android.accounts.AccountManager -import android.content.Context import dagger.Binds import dagger.Module import dagger.Provides import dagger.hilt.InstallIn -import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import gq.kirmanak.mealient.data.auth.AuthDataSource import gq.kirmanak.mealient.data.auth.AuthRepo @@ -15,7 +12,7 @@ import gq.kirmanak.mealient.data.auth.impl.AuthDataSourceImpl import gq.kirmanak.mealient.data.auth.impl.AuthRepoImpl import gq.kirmanak.mealient.data.auth.impl.AuthService import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl -import gq.kirmanak.mealient.data.impl.RetrofitBuilder +import gq.kirmanak.mealient.data.network.RetrofitBuilder import gq.kirmanak.mealient.data.network.ServiceFactory import gq.kirmanak.mealient.data.network.createServiceFactory import javax.inject.Singleton diff --git a/app/src/main/java/gq/kirmanak/mealient/di/NetworkModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/NetworkModule.kt new file mode 100644 index 0000000..80de298 --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/di/NetworkModule.kt @@ -0,0 +1,27 @@ +package gq.kirmanak.mealient.di + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import gq.kirmanak.mealient.data.network.OkHttpBuilder +import kotlinx.serialization.json.Json +import okhttp3.OkHttpClient +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object NetworkModule { + + @Provides + @Singleton + fun createOkHttp(okHttpBuilder: OkHttpBuilder): OkHttpClient = + okHttpBuilder.buildOkHttp() + + @Provides + @Singleton + fun createJson(): Json = Json { + coerceInputValues = true + ignoreUnknownKeys = true + } +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt index a01c838..21699a6 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt @@ -6,7 +6,7 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import gq.kirmanak.mealient.data.impl.RetrofitBuilder +import gq.kirmanak.mealient.data.network.RetrofitBuilder import gq.kirmanak.mealient.data.network.ServiceFactory import gq.kirmanak.mealient.data.network.createServiceFactory import gq.kirmanak.mealient.data.recipes.RecipeImageLoader diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/NetworkExtensions.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/NetworkExtensions.kt similarity index 93% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/util/NetworkExtensions.kt rename to app/src/main/java/gq/kirmanak/mealient/extensions/NetworkExtensions.kt index c226ace..3de9dd7 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/NetworkExtensions.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/NetworkExtensions.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl.util +package gq.kirmanak.mealient.extensions import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/RemoteToLocalMappings.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt similarity index 97% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/util/RemoteToLocalMappings.kt rename to app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt index fb8a4be..8a0bafa 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/RemoteToLocalMappings.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/RemoteToLocalMappings.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl.util +package gq.kirmanak.mealient.extensions import gq.kirmanak.mealient.data.recipes.db.entity.RecipeEntity import gq.kirmanak.mealient.data.recipes.db.entity.RecipeIngredientEntity diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/RoomTypeConverters.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/RoomTypeConverters.kt similarity index 93% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/util/RoomTypeConverters.kt rename to app/src/main/java/gq/kirmanak/mealient/extensions/RoomTypeConverters.kt index 244fd15..abfcfbb 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/RoomTypeConverters.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/RoomTypeConverters.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl.util +package gq.kirmanak.mealient.extensions import androidx.room.TypeConverter import kotlinx.datetime.* diff --git a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/SharedPrefExtensions.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/SharedPrefExtensions.kt similarity index 97% rename from app/src/main/java/gq/kirmanak/mealient/data/impl/util/SharedPrefExtensions.kt rename to app/src/main/java/gq/kirmanak/mealient/extensions/SharedPrefExtensions.kt index 46b5df5..edd88ca 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/impl/util/SharedPrefExtensions.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/SharedPrefExtensions.kt @@ -1,4 +1,4 @@ -package gq.kirmanak.mealient.data.impl.util +package gq.kirmanak.mealient.extensions import android.content.SharedPreferences import kotlinx.coroutines.Dispatchers diff --git a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt index 8c51447..ca8869e 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthDataSourceImplTest.kt @@ -3,7 +3,7 @@ package gq.kirmanak.mealient.data.auth.impl import com.google.common.truth.Truth.assertThat import gq.kirmanak.mealient.data.auth.impl.AuthenticationError.* import gq.kirmanak.mealient.data.network.ServiceFactory -import gq.kirmanak.mealient.di.AppModule +import gq.kirmanak.mealient.di.NetworkModule import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL import gq.kirmanak.mealient.test.AuthImplTestData.TEST_PASSWORD import gq.kirmanak.mealient.test.AuthImplTestData.TEST_TOKEN @@ -33,7 +33,7 @@ class AuthDataSourceImplTest { @Before fun setUp() { MockKAnnotations.init(this) - subject = AuthDataSourceImpl(authServiceFactory, AppModule.createJson()) + subject = AuthDataSourceImpl(authServiceFactory, NetworkModule.createJson()) } @Test diff --git a/app/src/test/java/gq/kirmanak/mealient/data/impl/RoomTypeConvertersTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/impl/RoomTypeConvertersTest.kt index 9632268..85ff1de 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/impl/RoomTypeConvertersTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/impl/RoomTypeConvertersTest.kt @@ -1,7 +1,7 @@ package gq.kirmanak.mealient.data.impl import com.google.common.truth.Truth.assertThat -import gq.kirmanak.mealient.data.impl.util.RoomTypeConverters +import gq.kirmanak.mealient.extensions.RoomTypeConverters import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime import org.junit.Test