From 2375be0329075023a0fa2b60ecda5102ca2de6cb Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Tue, 4 Jul 2023 18:22:16 +0200 Subject: [PATCH] Reduce memory footprint of Hilt (#159) * Remove @Singleton where it is not needed * Use @AssistedFactory where possible --- .../data/add/impl/AddRecipeRepoImpl.kt | 2 - .../data/auth/impl/AuthDataSourceImpl.kt | 2 - .../mealient/data/auth/impl/AuthRepoImpl.kt | 2 - .../data/baseurl/ServerInfoRepoImpl.kt | 2 - .../data/baseurl/VersionDataSourceImpl.kt | 2 - .../baseurl/impl/ServerInfoStorageImpl.kt | 2 - .../configuration/BuildConfigurationImpl.kt | 11 +---- .../data/disclaimer/DisclaimerStorageImpl.kt | 2 - .../migration/From24AuthMigrationExecutor.kt | 2 - .../data/migration/MigrationDetectorImpl.kt | 3 -- .../data/network/MealieDataSourceWrapper.kt | 2 - .../impl/RecipeImageUrlProviderImpl.kt | 2 - .../data/recipes/impl/RecipeRepoImpl.kt | 2 - .../data/share/ShareRecipeRepoImpl.kt | 2 - .../kirmanak/mealient/di/AddRecipeModule.kt | 4 -- .../java/gq/kirmanak/mealient/di/AppModule.kt | 1 - .../mealient/di/ArchitectureModule.kt | 2 - .../gq/kirmanak/mealient/di/AuthModule.kt | 19 -------- .../gq/kirmanak/mealient/di/BaseURLModule.kt | 5 --- .../kirmanak/mealient/di/DisclaimerModule.kt | 2 - .../kirmanak/mealient/di/MigrationModule.kt | 3 -- .../gq/kirmanak/mealient/di/RecipeModule.kt | 7 --- .../kirmanak/mealient/di/ShareRecipeModule.kt | 3 -- .../ui/recipes/images/RecipeModelLoader.kt | 20 ++++----- .../images/RecipePreloadModelProvider.kt | 21 ++++----- .../ui/recipes/info/RecipeInfoFragment.kt | 3 +- .../recipes/info/RecipeIngredientsAdapter.kt | 43 ++++++++----------- .../recipes/info/RecipeInstructionsAdapter.kt | 25 ++++------- .../configuration/AppDispatchersImpl.kt | 11 +++-- .../configuration/ArchitectureModule.kt | 2 - .../mealient/database/DatabaseModule.kt | 2 - .../database/recipe/RecipeStorageImpl.kt | 2 - .../gq/kirmanak/mealient/DebugModule.kt | 3 -- .../mealient/datasource/DataSourceModule.kt | 7 --- .../datasource/impl/AuthInterceptor.kt | 2 - .../datasource/impl/BaseUrlInterceptor.kt | 2 - .../datasource/impl/CacheBuilderImpl.kt | 2 - .../impl/NetworkRequestWrapperImpl.kt | 2 - .../datasource/impl/OkHttpBuilderImpl.kt | 2 - .../datasource/impl/RetrofitBuilder.kt | 2 - .../datasource/v0/MealieDataSourceV0Impl.kt | 2 - .../datasource/v1/MealieDataSourceV1Impl.kt | 2 - .../gq/kirmanak/mealient/ReleaseModule.kt | 1 - .../datastore/recipe/AddRecipeStorageImpl.kt | 2 - .../shopping_lists/ShoppingListsModule.kt | 3 -- .../network/ShoppingListsDataSourceImpl.kt | 2 - .../repo/ShoppingListsRepoImpl.kt | 2 - .../mealient/logging/LogcatAppender.kt | 2 - .../kirmanak/mealient/logging/LoggerImpl.kt | 2 - .../mealient/logging/LoggingModule.kt | 3 -- .../mealient/model_mapper/ModelMapperImpl.kt | 2 - .../model_mapper/ModelMapperModule.kt | 2 - .../gq/kirmanak/mealient/test/FakeLogger.kt | 2 - .../mealient/test/FakeLoggingModule.kt | 2 - .../gq/kirmanak/mealient/ui/UiModule.kt | 2 - 55 files changed, 51 insertions(+), 215 deletions(-) diff --git a/app/src/main/java/gq/kirmanak/mealient/data/add/impl/AddRecipeRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/add/impl/AddRecipeRepoImpl.kt index 3003701..cd580c8 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/add/impl/AddRecipeRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/add/impl/AddRecipeRepoImpl.kt @@ -10,9 +10,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import javax.inject.Inject -import javax.inject.Singleton -@Singleton class AddRecipeRepoImpl @Inject constructor( private val addRecipeDataSource: AddRecipeDataSource, private val addRecipeStorage: AddRecipeStorage, 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 70aaa2d..a26ea37 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 @@ -8,9 +8,7 @@ import gq.kirmanak.mealient.datasource.v0.models.CreateApiTokenRequestV0 import gq.kirmanak.mealient.datasource.v1.MealieDataSourceV1 import gq.kirmanak.mealient.datasource.v1.models.CreateApiTokenRequestV1 import javax.inject.Inject -import javax.inject.Singleton -@Singleton class AuthDataSourceImpl @Inject constructor( private val serverInfoRepo: ServerInfoRepo, private val v0Source: MealieDataSourceV0, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImpl.kt index cb241cb..a97ee57 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImpl.kt @@ -8,9 +8,7 @@ import gq.kirmanak.mealient.logging.Logger import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject -import javax.inject.Singleton -@Singleton class AuthRepoImpl @Inject constructor( private val authStorage: AuthStorage, private val authDataSource: AuthDataSource, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/ServerInfoRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/ServerInfoRepoImpl.kt index 7a9c6f2..5e1ea59 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/ServerInfoRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/ServerInfoRepoImpl.kt @@ -7,9 +7,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map import javax.inject.Inject -import javax.inject.Singleton -@Singleton class ServerInfoRepoImpl @Inject constructor( private val serverInfoStorage: ServerInfoStorage, private val versionDataSource: VersionDataSource, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImpl.kt index 4e451aa..dceb915 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/VersionDataSourceImpl.kt @@ -9,9 +9,7 @@ import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope import javax.inject.Inject -import javax.inject.Singleton -@Singleton class VersionDataSourceImpl @Inject constructor( private val v0Source: MealieDataSourceV0, private val v1Source: MealieDataSourceV1, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/ServerInfoStorageImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/ServerInfoStorageImpl.kt index 7631f35..579afc7 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/ServerInfoStorageImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/baseurl/impl/ServerInfoStorageImpl.kt @@ -5,9 +5,7 @@ import gq.kirmanak.mealient.data.baseurl.ServerInfoStorage import gq.kirmanak.mealient.data.storage.PreferencesStorage import kotlinx.coroutines.flow.Flow import javax.inject.Inject -import javax.inject.Singleton -@Singleton class ServerInfoStorageImpl @Inject constructor( private val preferencesStorage: PreferencesStorage, ) : ServerInfoStorage { diff --git a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt index beb9ac5..b4e5784 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/configuration/BuildConfigurationImpl.kt @@ -3,17 +3,10 @@ package gq.kirmanak.mealient.data.configuration import gq.kirmanak.mealient.BuildConfig import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration import javax.inject.Inject -import javax.inject.Singleton -@Singleton class BuildConfigurationImpl @Inject constructor() : BuildConfiguration { - @get:JvmName("_isDebug") - private val isDebug by lazy { BuildConfig.DEBUG } + override fun isDebug(): Boolean = BuildConfig.DEBUG - private val versionCode by lazy { BuildConfig.VERSION_CODE } - - override fun isDebug(): Boolean = isDebug - - override fun versionCode(): Int = versionCode + override fun versionCode(): Int = BuildConfig.VERSION_CODE } \ No newline at end of file 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 17bacac..b592e35 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 @@ -6,9 +6,7 @@ import gq.kirmanak.mealient.logging.Logger import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject -import javax.inject.Singleton -@Singleton class DisclaimerStorageImpl @Inject constructor( private val preferencesStorage: PreferencesStorage, private val logger: Logger, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/migration/From24AuthMigrationExecutor.kt b/app/src/main/java/gq/kirmanak/mealient/data/migration/From24AuthMigrationExecutor.kt index 638c8bd..5358ac9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/migration/From24AuthMigrationExecutor.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/migration/From24AuthMigrationExecutor.kt @@ -8,9 +8,7 @@ import gq.kirmanak.mealient.datastore.DataStoreModule.Companion.ENCRYPTED import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject import javax.inject.Named -import javax.inject.Singleton -@Singleton class From24AuthMigrationExecutor @Inject constructor( @Named(ENCRYPTED) private val sharedPreferences: SharedPreferences, private val authRepo: AuthRepo, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/migration/MigrationDetectorImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/migration/MigrationDetectorImpl.kt index aeb41f2..0f241d0 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/migration/MigrationDetectorImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/migration/MigrationDetectorImpl.kt @@ -5,9 +5,7 @@ import gq.kirmanak.mealient.data.storage.PreferencesStorage import gq.kirmanak.mealient.datasource.runCatchingExceptCancel import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject -import javax.inject.Singleton -@Singleton class MigrationDetectorImpl @Inject constructor( private val preferencesStorage: PreferencesStorage, private val migrationExecutors: Set<@JvmSuppressWildcards MigrationExecutor>, @@ -15,7 +13,6 @@ class MigrationDetectorImpl @Inject constructor( private val logger: Logger, ) : MigrationDetector { - override suspend fun executeMigrations() { val key = preferencesStorage.lastExecutedMigrationVersionKey diff --git a/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt b/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt index 22302da..d14ac14 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/network/MealieDataSourceWrapper.kt @@ -13,9 +13,7 @@ import gq.kirmanak.mealient.datasource.v0.MealieDataSourceV0 import gq.kirmanak.mealient.datasource.v1.MealieDataSourceV1 import gq.kirmanak.mealient.model_mapper.ModelMapper import javax.inject.Inject -import javax.inject.Singleton -@Singleton class MealieDataSourceWrapper @Inject constructor( private val serverInfoRepo: ServerInfoRepo, private val v0Source: MealieDataSourceV0, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImpl.kt index 5c693ec..d758c53 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeImageUrlProviderImpl.kt @@ -4,9 +4,7 @@ import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo import gq.kirmanak.mealient.logging.Logger import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import javax.inject.Inject -import javax.inject.Singleton -@Singleton class RecipeImageUrlProviderImpl @Inject constructor( private val serverInfoRepo: ServerInfoRepo, private val logger: Logger, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt index 79607e4..e372ef7 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/recipes/impl/RecipeRepoImpl.kt @@ -12,10 +12,8 @@ import gq.kirmanak.mealient.datasource.runCatchingExceptCancel import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.model_mapper.ModelMapper import javax.inject.Inject -import javax.inject.Singleton @OptIn(ExperimentalPagingApi::class) -@Singleton class RecipeRepoImpl @Inject constructor( private val mediator: RecipesRemoteMediator, private val storage: RecipeStorage, diff --git a/app/src/main/java/gq/kirmanak/mealient/data/share/ShareRecipeRepoImpl.kt b/app/src/main/java/gq/kirmanak/mealient/data/share/ShareRecipeRepoImpl.kt index a36242f..750ac76 100644 --- a/app/src/main/java/gq/kirmanak/mealient/data/share/ShareRecipeRepoImpl.kt +++ b/app/src/main/java/gq/kirmanak/mealient/data/share/ShareRecipeRepoImpl.kt @@ -4,9 +4,7 @@ import androidx.core.util.PatternsCompat import gq.kirmanak.mealient.datasource.models.ParseRecipeURLInfo import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject -import javax.inject.Singleton -@Singleton class ShareRecipeRepoImpl @Inject constructor( private val logger: Logger, private val parseRecipeDataSource: ParseRecipeDataSource, diff --git a/app/src/main/java/gq/kirmanak/mealient/di/AddRecipeModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/AddRecipeModule.kt index 97f9ce8..6c1ad10 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AddRecipeModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AddRecipeModule.kt @@ -10,7 +10,6 @@ import gq.kirmanak.mealient.data.add.impl.AddRecipeRepoImpl import gq.kirmanak.mealient.data.network.MealieDataSourceWrapper import gq.kirmanak.mealient.datastore.recipe.AddRecipeStorage import gq.kirmanak.mealient.datastore.recipe.AddRecipeStorageImpl -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) @@ -18,14 +17,11 @@ interface AddRecipeModule { @Binds - @Singleton fun provideAddRecipeRepo(repo: AddRecipeRepoImpl): AddRecipeRepo @Binds - @Singleton fun bindAddRecipeDataSource(mealieDataSourceWrapper: MealieDataSourceWrapper): AddRecipeDataSource @Binds - @Singleton fun bindAddRecipeStorage(addRecipeStorageImpl: AddRecipeStorageImpl): AddRecipeStorage } \ No newline at end of file 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 8b3a7f7..a717fb5 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/AppModule.kt @@ -27,6 +27,5 @@ interface AppModule { } @Binds - @Singleton fun bindPreferencesStorage(preferencesStorage: PreferencesStorageImpl): PreferencesStorage } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/di/ArchitectureModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/ArchitectureModule.kt index c322301..d2d8454 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/ArchitectureModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/ArchitectureModule.kt @@ -6,13 +6,11 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration import gq.kirmanak.mealient.data.configuration.BuildConfigurationImpl -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface ArchitectureModule { @Binds - @Singleton fun bindBuildConfiguration(buildConfigurationImpl: BuildConfigurationImpl): BuildConfiguration } \ 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 7991bd4..c4b953b 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,8 @@ 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 @@ -16,38 +12,23 @@ import gq.kirmanak.mealient.data.auth.impl.AuthRepoImpl import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl import gq.kirmanak.mealient.datasource.AuthenticationProvider import gq.kirmanak.mealient.shopping_lists.repo.ShoppingListsAuthRepo -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface AuthModule { - companion object { - - @Provides - @Singleton - fun provideAccountManager(@ApplicationContext context: Context): AccountManager { - return AccountManager.get(context) - } - } - @Binds - @Singleton fun bindAuthDataSource(authDataSourceImpl: AuthDataSourceImpl): AuthDataSource @Binds - @Singleton fun bindAuthRepo(authRepo: AuthRepoImpl): AuthRepo @Binds - @Singleton fun bindAuthProvider(authRepo: AuthRepoImpl): AuthenticationProvider @Binds - @Singleton fun bindAuthStorage(authStorageImpl: AuthStorageImpl): AuthStorage @Binds - @Singleton fun bindShoppingListsAuthRepo(impl: AuthRepoImpl): ShoppingListsAuthRepo } diff --git a/app/src/main/java/gq/kirmanak/mealient/di/BaseURLModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/BaseURLModule.kt index 0f208d0..34ec7d9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/BaseURLModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/BaseURLModule.kt @@ -7,25 +7,20 @@ import dagger.hilt.components.SingletonComponent import gq.kirmanak.mealient.data.baseurl.* import gq.kirmanak.mealient.data.baseurl.impl.ServerInfoStorageImpl import gq.kirmanak.mealient.datasource.ServerUrlProvider -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface BaseURLModule { @Binds - @Singleton fun bindVersionDataSource(versionDataSourceImpl: VersionDataSourceImpl): VersionDataSource @Binds - @Singleton fun bindBaseUrlStorage(baseURLStorageImpl: ServerInfoStorageImpl): ServerInfoStorage @Binds - @Singleton fun bindServerInfoRepo(serverInfoRepoImpl: ServerInfoRepoImpl): ServerInfoRepo @Binds - @Singleton fun bindServerUrlProvider(serverInfoRepoImpl: ServerInfoRepoImpl): ServerUrlProvider } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/di/DisclaimerModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/DisclaimerModule.kt index 056bb05..8128e4f 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/DisclaimerModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/DisclaimerModule.kt @@ -6,13 +6,11 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorageImpl -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface DisclaimerModule { @Binds - @Singleton fun provideDisclaimerStorage(disclaimerStorageImpl: DisclaimerStorageImpl): DisclaimerStorage } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/di/MigrationModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/MigrationModule.kt index 2ffd796..2c4a6c0 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/MigrationModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/MigrationModule.kt @@ -9,18 +9,15 @@ import gq.kirmanak.mealient.data.migration.From24AuthMigrationExecutor import gq.kirmanak.mealient.data.migration.MigrationDetector import gq.kirmanak.mealient.data.migration.MigrationDetectorImpl import gq.kirmanak.mealient.data.migration.MigrationExecutor -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface MigrationModule { @Binds - @Singleton @IntoSet fun bindFrom24AuthMigrationExecutor(from24AuthMigrationExecutor: From24AuthMigrationExecutor): MigrationExecutor @Binds - @Singleton fun bindMigrationDetector(migrationDetectorImpl: MigrationDetectorImpl): MigrationDetector } \ 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 fcbeb58..b8b176d 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/RecipeModule.kt @@ -15,36 +15,29 @@ import gq.kirmanak.mealient.data.recipes.network.RecipeDataSource import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.ui.recipes.images.RecipeModelLoaderFactory import java.io.InputStream -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface RecipeModule { @Binds - @Singleton fun provideRecipeDataSource(mealieDataSourceWrapper: MealieDataSourceWrapper): RecipeDataSource @Binds - @Singleton fun provideRecipeRepo(recipeRepoImpl: RecipeRepoImpl): RecipeRepo @Binds - @Singleton fun bindImageUrlProvider(recipeImageUrlProviderImpl: RecipeImageUrlProviderImpl): RecipeImageUrlProvider @Binds - @Singleton fun bindModelLoaderFactory(recipeModelLoaderFactory: RecipeModelLoaderFactory): ModelLoaderFactory @Binds - @Singleton fun bindRecipePagingSourceFactory(recipePagingSourceFactoryImpl: RecipePagingSourceFactoryImpl): RecipePagingSourceFactory companion object { @Provides - @Singleton fun provideGlideRequestOptions(): RequestOptions = RequestOptions.centerCropTransform() .placeholder(R.drawable.placeholder_recipe) } diff --git a/app/src/main/java/gq/kirmanak/mealient/di/ShareRecipeModule.kt b/app/src/main/java/gq/kirmanak/mealient/di/ShareRecipeModule.kt index 7c7ace6..ed0e138 100644 --- a/app/src/main/java/gq/kirmanak/mealient/di/ShareRecipeModule.kt +++ b/app/src/main/java/gq/kirmanak/mealient/di/ShareRecipeModule.kt @@ -8,17 +8,14 @@ import gq.kirmanak.mealient.data.network.MealieDataSourceWrapper import gq.kirmanak.mealient.data.share.ParseRecipeDataSource import gq.kirmanak.mealient.data.share.ShareRecipeRepo import gq.kirmanak.mealient.data.share.ShareRecipeRepoImpl -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface ShareRecipeModule { @Binds - @Singleton fun bindShareRecipeRepo(shareRecipeRepoImpl: ShareRecipeRepoImpl): ShareRecipeRepo @Binds - @Singleton fun bindParseRecipeDataSource(mealieDataSourceWrapper: MealieDataSourceWrapper): ParseRecipeDataSource } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt index 9730bce..e390897 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipeModelLoader.kt @@ -5,31 +5,29 @@ import com.bumptech.glide.load.model.GlideUrl import com.bumptech.glide.load.model.ModelCache import com.bumptech.glide.load.model.ModelLoader import com.bumptech.glide.load.model.stream.BaseGlideUrlLoader +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import gq.kirmanak.mealient.data.recipes.impl.RecipeImageUrlProvider import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.logging.Logger import kotlinx.coroutines.runBlocking import java.io.InputStream -import javax.inject.Inject -import javax.inject.Singleton -class RecipeModelLoader private constructor( +class RecipeModelLoader @AssistedInject constructor( private val recipeImageUrlProvider: RecipeImageUrlProvider, private val logger: Logger, - concreteLoader: ModelLoader, - cache: ModelCache, + @Assisted concreteLoader: ModelLoader, + @Assisted cache: ModelCache, ) : BaseGlideUrlLoader(concreteLoader, cache) { - @Singleton - class Factory @Inject constructor( - private val recipeImageUrlProvider: RecipeImageUrlProvider, - private val logger: Logger, - ) { + @AssistedFactory + interface Factory { fun build( concreteLoader: ModelLoader, cache: ModelCache, - ) = RecipeModelLoader(recipeImageUrlProvider, logger, concreteLoader, cache) + ): RecipeModelLoader } diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt index 6e9ace0..0679415 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/images/RecipePreloadModelProvider.kt @@ -6,13 +6,14 @@ import com.bumptech.glide.Glide import com.bumptech.glide.ListPreloader import com.bumptech.glide.RequestBuilder import com.bumptech.glide.request.RequestOptions -import dagger.hilt.android.scopes.FragmentScoped +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.logging.Logger -import javax.inject.Inject -class RecipePreloadModelProvider( - private val adapter: PagingDataAdapter, +class RecipePreloadModelProvider @AssistedInject constructor( + @Assisted private val adapter: PagingDataAdapter, private val fragment: Fragment, private val requestOptions: RequestOptions, private val logger: Logger, @@ -28,15 +29,9 @@ class RecipePreloadModelProvider( return Glide.with(fragment).load(item).apply(requestOptions) } - @FragmentScoped - class Factory @Inject constructor( - private val fragment: Fragment, - private val requestOptions: RequestOptions, - private val logger: Logger, - ) { + @AssistedFactory + interface Factory { - fun create( - adapter: PagingDataAdapter, - ) = RecipePreloadModelProvider(adapter, fragment, requestOptions, logger) + fun create(adapter: PagingDataAdapter): RecipePreloadModelProvider } } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt index d6649ef..739984c 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInfoFragment.kt @@ -20,10 +20,9 @@ class RecipeInfoFragment : BottomSheetDialogFragment() { private val binding by viewBinding(FragmentRecipeInfoBinding::bind) private val viewModel by viewModels() private lateinit var ingredientsAdapter: RecipeIngredientsAdapter - private val instructionsAdapter by lazy { recipeInstructionsAdapterFactory.build() } @Inject - lateinit var recipeInstructionsAdapterFactory: RecipeInstructionsAdapter.Factory + lateinit var instructionsAdapter: RecipeInstructionsAdapter @Inject lateinit var recipeIngredientsAdapterFactory: RecipeIngredientsAdapter.Factory diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt index 59c9cce..b7172b1 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeIngredientsAdapter.kt @@ -7,50 +7,38 @@ import androidx.core.view.isGone import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import gq.kirmanak.mealient.database.recipe.entity.RecipeIngredientEntity import gq.kirmanak.mealient.databinding.ViewHolderIngredientBinding import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.ui.recipes.info.RecipeIngredientsAdapter.RecipeIngredientViewHolder -import javax.inject.Inject -import javax.inject.Singleton -class RecipeIngredientsAdapter private constructor( +class RecipeIngredientsAdapter @AssistedInject constructor( private val recipeIngredientViewHolderFactory: RecipeIngredientViewHolder.Factory, private val logger: Logger, - private val disableAmounts: Boolean, + @Assisted private val disableAmounts: Boolean, ) : ListAdapter(RecipeIngredientDiffCallback) { - @Singleton - class Factory @Inject constructor( - private val recipeIngredientViewHolderFactory: RecipeIngredientViewHolder.Factory, - private val logger: Logger, - ) { - fun build(disableAmounts: Boolean) = RecipeIngredientsAdapter( - recipeIngredientViewHolderFactory = recipeIngredientViewHolderFactory, - logger = logger, - disableAmounts = disableAmounts, - ) + @AssistedFactory + interface Factory { + fun build(disableAmounts: Boolean): RecipeIngredientsAdapter } - class RecipeIngredientViewHolder private constructor( - private val binding: ViewHolderIngredientBinding, + class RecipeIngredientViewHolder @AssistedInject constructor( + @Assisted private val binding: ViewHolderIngredientBinding, + @Assisted private val disableAmounts: Boolean, private val logger: Logger, - private val disableAmounts: Boolean, ) : RecyclerView.ViewHolder(binding.root) { - @Singleton - class Factory @Inject constructor( - private val logger: Logger, - ) { + @AssistedFactory + interface Factory { fun build( binding: ViewHolderIngredientBinding, disableAmounts: Boolean, - ) = RecipeIngredientViewHolder( - binding = binding, - logger = logger, - disableAmounts = disableAmounts, - ) + ): RecipeIngredientViewHolder } fun bind(item: RecipeIngredientEntity) { @@ -133,15 +121,18 @@ fun Double.mediantMethod(d: Int = 10, mixed: Boolean = true): Triple d2 -> d2 = d + 1 else -> d1 = d + 1 } break } + x < m -> { n2 += n1 d2 += d1 } + else -> { n1 += n2 d1 += d2 diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt index 0fe7b9b..7f0b507 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/info/RecipeInstructionsAdapter.kt @@ -5,6 +5,9 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import gq.kirmanak.mealient.R import gq.kirmanak.mealient.database.recipe.entity.RecipeInstructionEntity import gq.kirmanak.mealient.databinding.ViewHolderInstructionBinding @@ -12,21 +15,12 @@ import gq.kirmanak.mealient.extensions.resources import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.ui.recipes.info.RecipeInstructionsAdapter.RecipeInstructionViewHolder import javax.inject.Inject -import javax.inject.Singleton -class RecipeInstructionsAdapter private constructor( +class RecipeInstructionsAdapter @Inject constructor( private val logger: Logger, private val recipeInstructionViewHolderFactory: RecipeInstructionViewHolder.Factory, ) : ListAdapter(RecipeInstructionDiffCallback) { - @Singleton - class Factory @Inject constructor( - private val logger: Logger, - private val recipeInstructionViewHolderFactory: RecipeInstructionViewHolder.Factory, - ) { - fun build() = RecipeInstructionsAdapter(logger, recipeInstructionViewHolderFactory) - } - private object RecipeInstructionDiffCallback : DiffUtil.ItemCallback() { override fun areItemsTheSame( @@ -40,15 +34,14 @@ class RecipeInstructionsAdapter private constructor( ): Boolean = oldItem == newItem } - class RecipeInstructionViewHolder private constructor( - private val binding: ViewHolderInstructionBinding, + class RecipeInstructionViewHolder @AssistedInject constructor( + @Assisted private val binding: ViewHolderInstructionBinding, private val logger: Logger, ) : RecyclerView.ViewHolder(binding.root) { - @Singleton - class Factory @Inject constructor(private val logger: Logger) { - fun build(binding: ViewHolderInstructionBinding) = - RecipeInstructionViewHolder(binding, logger) + @AssistedFactory + interface Factory { + fun build(binding: ViewHolderInstructionBinding): RecipeInstructionViewHolder } fun bind(item: RecipeInstructionEntity, position: Int) { diff --git a/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/AppDispatchersImpl.kt b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/AppDispatchersImpl.kt index 69680da..1f6d142 100644 --- a/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/AppDispatchersImpl.kt +++ b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/AppDispatchersImpl.kt @@ -1,17 +1,16 @@ package gq.kirmanak.mealient.architecture.configuration +import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers import javax.inject.Inject -import javax.inject.Singleton -@Singleton class AppDispatchersImpl @Inject constructor() : AppDispatchers { - override val io = Dispatchers.IO + override val io: CoroutineDispatcher get() = Dispatchers.IO - override val main = Dispatchers.Main + override val main: CoroutineDispatcher get() = Dispatchers.Main - override val default = Dispatchers.Default + override val default: CoroutineDispatcher get() = Dispatchers.Default - override val unconfined = Dispatchers.Unconfined + override val unconfined: CoroutineDispatcher get() = Dispatchers.Unconfined } \ No newline at end of file diff --git a/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/ArchitectureModule.kt b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/ArchitectureModule.kt index 2b445b4..55d1167 100644 --- a/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/ArchitectureModule.kt +++ b/architecture/src/main/kotlin/gq/kirmanak/mealient/architecture/configuration/ArchitectureModule.kt @@ -4,13 +4,11 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface ArchitectureModule { @Binds - @Singleton fun bindAppDispatchers(appDispatchersImpl: AppDispatchersImpl): AppDispatchers } \ No newline at end of file diff --git a/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt index 50ebcf7..45b82c4 100644 --- a/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/DatabaseModule.kt @@ -26,11 +26,9 @@ internal interface DatabaseModule { .build() @Provides - @Singleton fun provideRecipeDao(db: AppDb): RecipeDao = db.recipeDao() } @Binds - @Singleton fun provideRecipeStorage(recipeStorageImpl: RecipeStorageImpl): RecipeStorage } \ No newline at end of file diff --git a/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeStorageImpl.kt b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeStorageImpl.kt index 9d37256..2548f43 100644 --- a/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeStorageImpl.kt +++ b/database/src/main/kotlin/gq/kirmanak/mealient/database/recipe/RecipeStorageImpl.kt @@ -10,9 +10,7 @@ import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.database.recipe.entity.RecipeWithSummaryAndIngredientsAndInstructions import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject -import javax.inject.Singleton -@Singleton internal class RecipeStorageImpl @Inject constructor( private val db: AppDb, private val logger: Logger, diff --git a/datasource/src/debug/kotlin/gq/kirmanak/mealient/DebugModule.kt b/datasource/src/debug/kotlin/gq/kirmanak/mealient/DebugModule.kt index b7d7c85..8969796 100644 --- a/datasource/src/debug/kotlin/gq/kirmanak/mealient/DebugModule.kt +++ b/datasource/src/debug/kotlin/gq/kirmanak/mealient/DebugModule.kt @@ -14,13 +14,11 @@ import gq.kirmanak.mealient.datasource.BuildConfig import gq.kirmanak.mealient.logging.Logger import okhttp3.Interceptor import okhttp3.logging.HttpLoggingInterceptor -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) object DebugModule { @Provides - @Singleton @IntoSet fun provideLoggingInterceptor(logger: Logger): Interceptor { val interceptor = HttpLoggingInterceptor { message -> logger.v(tag = "OkHttp") { message } } @@ -32,7 +30,6 @@ object DebugModule { } @Provides - @Singleton @IntoSet fun provideChuckerInterceptor(@ApplicationContext context: Context): Interceptor { val collector = ChuckerCollector( diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/DataSourceModule.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/DataSourceModule.kt index 9d09761..d33e4ce 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/DataSourceModule.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/DataSourceModule.kt @@ -73,32 +73,25 @@ interface DataSourceModule { } @Binds - @Singleton fun bindCacheBuilder(cacheBuilderImpl: CacheBuilderImpl): CacheBuilder @Binds - @Singleton fun bindOkHttpBuilder(okHttpBuilderImpl: OkHttpBuilderImpl): OkHttpBuilder @Binds - @Singleton fun bindMealieDataSource(mealientDataSourceImpl: MealieDataSourceV0Impl): MealieDataSourceV0 @Binds - @Singleton fun bindMealieDataSourceV1(mealientDataSourceImpl: MealieDataSourceV1Impl): MealieDataSourceV1 @Binds - @Singleton fun bindNetworkRequestWrapper(networkRequestWrapperImpl: NetworkRequestWrapperImpl): NetworkRequestWrapper @Binds - @Singleton @IntoSet fun bindAuthInterceptor(authInterceptor: AuthInterceptor): LocalInterceptor @Binds - @Singleton @IntoSet fun bindBaseUrlInterceptor(baseUrlInterceptor: BaseUrlInterceptor): LocalInterceptor } \ No newline at end of file diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/AuthInterceptor.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/AuthInterceptor.kt index b4fe9fc..a1ee900 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/AuthInterceptor.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/AuthInterceptor.kt @@ -9,9 +9,7 @@ import okhttp3.Interceptor import okhttp3.Response import javax.inject.Inject import javax.inject.Provider -import javax.inject.Singleton -@Singleton class AuthInterceptor @Inject constructor( private val logger: Logger, private val authenticationProviderProvider: Provider, diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/BaseUrlInterceptor.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/BaseUrlInterceptor.kt index ad00f26..838c6eb 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/BaseUrlInterceptor.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/BaseUrlInterceptor.kt @@ -10,9 +10,7 @@ import okhttp3.Response import java.io.IOException import javax.inject.Inject import javax.inject.Provider -import javax.inject.Singleton -@Singleton class BaseUrlInterceptor @Inject constructor( private val logger: Logger, private val serverUrlProviderProvider: Provider, diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/CacheBuilderImpl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/CacheBuilderImpl.kt index 856723e..662ce20 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/CacheBuilderImpl.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/CacheBuilderImpl.kt @@ -8,9 +8,7 @@ import gq.kirmanak.mealient.logging.Logger import okhttp3.Cache import java.io.File import javax.inject.Inject -import javax.inject.Singleton -@Singleton class CacheBuilderImpl @Inject constructor( @ApplicationContext private val context: Context, private val logger: Logger, diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/NetworkRequestWrapperImpl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/NetworkRequestWrapperImpl.kt index c19f01b..d19e496 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/NetworkRequestWrapperImpl.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/NetworkRequestWrapperImpl.kt @@ -6,9 +6,7 @@ import gq.kirmanak.mealient.datasource.runCatchingExceptCancel import gq.kirmanak.mealient.logging.Logger import retrofit2.HttpException import javax.inject.Inject -import javax.inject.Singleton -@Singleton class NetworkRequestWrapperImpl @Inject constructor( private val logger: Logger, ) : NetworkRequestWrapper { diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/OkHttpBuilderImpl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/OkHttpBuilderImpl.kt index 13b532f..f20a637 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/OkHttpBuilderImpl.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/OkHttpBuilderImpl.kt @@ -7,9 +7,7 @@ import gq.kirmanak.mealient.logging.Logger import okhttp3.Interceptor import okhttp3.OkHttpClient import javax.inject.Inject -import javax.inject.Singleton -@Singleton class OkHttpBuilderImpl @Inject constructor( private val cacheBuilder: CacheBuilder, // Use @JvmSuppressWildcards because otherwise dagger can't inject it (https://stackoverflow.com/a/43149382) diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/RetrofitBuilder.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/RetrofitBuilder.kt index 8a5713f..adbd77b 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/RetrofitBuilder.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/impl/RetrofitBuilder.kt @@ -5,9 +5,7 @@ import okhttp3.OkHttpClient import retrofit2.Converter.Factory import retrofit2.Retrofit import javax.inject.Inject -import javax.inject.Singleton -@Singleton class RetrofitBuilder @Inject constructor( private val okHttpClient: OkHttpClient, private val converterFactory: Factory, diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v0/MealieDataSourceV0Impl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v0/MealieDataSourceV0Impl.kt index 89d5d70..9aebca7 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v0/MealieDataSourceV0Impl.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v0/MealieDataSourceV0Impl.kt @@ -18,9 +18,7 @@ import retrofit2.HttpException import java.net.ConnectException import java.net.SocketTimeoutException import javax.inject.Inject -import javax.inject.Singleton -@Singleton class MealieDataSourceV0Impl @Inject constructor( private val networkRequestWrapper: NetworkRequestWrapper, private val service: MealieServiceV0, diff --git a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt index 1f16b99..3c8ef5c 100644 --- a/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt +++ b/datasource/src/main/kotlin/gq/kirmanak/mealient/datasource/v1/MealieDataSourceV1Impl.kt @@ -27,9 +27,7 @@ import retrofit2.HttpException import java.net.ConnectException import java.net.SocketTimeoutException import javax.inject.Inject -import javax.inject.Singleton -@Singleton class MealieDataSourceV1Impl @Inject constructor( private val networkRequestWrapper: NetworkRequestWrapper, private val service: MealieServiceV1, diff --git a/datasource/src/release/java/gq/kirmanak/mealient/ReleaseModule.kt b/datasource/src/release/java/gq/kirmanak/mealient/ReleaseModule.kt index 1be726e..a8fdf32 100644 --- a/datasource/src/release/java/gq/kirmanak/mealient/ReleaseModule.kt +++ b/datasource/src/release/java/gq/kirmanak/mealient/ReleaseModule.kt @@ -15,6 +15,5 @@ object ReleaseModule { // is required by Dagger, so an empty Set is provided here // Use @JvmSuppressWildcards because otherwise dagger can't inject it (https://stackoverflow.com/a/43149382) @Provides - @Singleton fun provideInterceptors(): Set<@JvmSuppressWildcards Interceptor> = emptySet() } diff --git a/datastore/src/main/kotlin/gq/kirmanak/mealient/datastore/recipe/AddRecipeStorageImpl.kt b/datastore/src/main/kotlin/gq/kirmanak/mealient/datastore/recipe/AddRecipeStorageImpl.kt index 7f7ac37..4d26d3b 100644 --- a/datastore/src/main/kotlin/gq/kirmanak/mealient/datastore/recipe/AddRecipeStorageImpl.kt +++ b/datastore/src/main/kotlin/gq/kirmanak/mealient/datastore/recipe/AddRecipeStorageImpl.kt @@ -5,9 +5,7 @@ import gq.kirmanak.mealient.logging.Logger import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import javax.inject.Inject -import javax.inject.Singleton -@Singleton class AddRecipeStorageImpl @Inject constructor( private val dataStore: DataStore, private val logger: Logger, diff --git a/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/ShoppingListsModule.kt b/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/ShoppingListsModule.kt index 1001dfd..d13567d 100644 --- a/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/ShoppingListsModule.kt +++ b/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/ShoppingListsModule.kt @@ -10,18 +10,15 @@ import gq.kirmanak.mealient.shopping_lists.repo.ShoppingListsRepo import gq.kirmanak.mealient.shopping_lists.repo.ShoppingListsRepoImpl import gq.kirmanak.mealient.shopping_lists.util.LoadingHelperFactory import gq.kirmanak.mealient.shopping_lists.util.LoadingHelperFactoryImpl -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface ShoppingListsModule { @Binds - @Singleton fun bindShoppingListsDataSource(impl: ShoppingListsDataSourceImpl): ShoppingListsDataSource @Binds - @Singleton fun bindShoppingListsRepo(impl: ShoppingListsRepoImpl): ShoppingListsRepo @Binds diff --git a/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/network/ShoppingListsDataSourceImpl.kt b/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/network/ShoppingListsDataSourceImpl.kt index f61b2a9..a418974 100644 --- a/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/network/ShoppingListsDataSourceImpl.kt +++ b/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/network/ShoppingListsDataSourceImpl.kt @@ -5,9 +5,7 @@ import gq.kirmanak.mealient.datasource.models.ShoppingListInfo import gq.kirmanak.mealient.datasource.v1.MealieDataSourceV1 import gq.kirmanak.mealient.model_mapper.ModelMapper import javax.inject.Inject -import javax.inject.Singleton -@Singleton class ShoppingListsDataSourceImpl @Inject constructor( private val v1Source: MealieDataSourceV1, private val modelMapper: ModelMapper, diff --git a/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/repo/ShoppingListsRepoImpl.kt b/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/repo/ShoppingListsRepoImpl.kt index 434772e..b8ee758 100644 --- a/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/repo/ShoppingListsRepoImpl.kt +++ b/features/shopping_lists/src/main/kotlin/gq/kirmanak/mealient/shopping_lists/repo/ShoppingListsRepoImpl.kt @@ -5,9 +5,7 @@ import gq.kirmanak.mealient.datasource.models.ShoppingListInfo import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.shopping_lists.network.ShoppingListsDataSource import javax.inject.Inject -import javax.inject.Singleton -@Singleton class ShoppingListsRepoImpl @Inject constructor( private val dataSource: ShoppingListsDataSource, private val logger: Logger, diff --git a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt index e916fcf..78b4a1d 100644 --- a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt +++ b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LogcatAppender.kt @@ -3,9 +3,7 @@ package gq.kirmanak.mealient.logging import android.util.Log import gq.kirmanak.mealient.architecture.configuration.BuildConfiguration import javax.inject.Inject -import javax.inject.Singleton -@Singleton class LogcatAppender @Inject constructor( private val buildConfiguration: BuildConfiguration, ) : Appender { diff --git a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggerImpl.kt b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggerImpl.kt index 831f3a8..09d7976 100644 --- a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggerImpl.kt +++ b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggerImpl.kt @@ -3,9 +3,7 @@ package gq.kirmanak.mealient.logging import android.util.Log import java.util.regex.Pattern import javax.inject.Inject -import javax.inject.Singleton -@Singleton class LoggerImpl @Inject constructor( private val appenders: Set<@JvmSuppressWildcards Appender>, ) : Logger { diff --git a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggingModule.kt b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggingModule.kt index ac258d4..7f267a3 100644 --- a/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggingModule.kt +++ b/logging/src/main/kotlin/gq/kirmanak/mealient/logging/LoggingModule.kt @@ -5,18 +5,15 @@ import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import dagger.multibindings.IntoSet -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface LoggingModule { @Binds - @Singleton fun bindLogger(loggerImpl: LoggerImpl): Logger @Binds - @Singleton @IntoSet fun bindLogcatAppender(logcatAppender: LogcatAppender): Appender } \ No newline at end of file diff --git a/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperImpl.kt b/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperImpl.kt index 30e34c0..f270c77 100644 --- a/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperImpl.kt +++ b/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperImpl.kt @@ -50,9 +50,7 @@ import gq.kirmanak.mealient.datasource.v1.models.VersionResponseV1 import gq.kirmanak.mealient.datastore.recipe.AddRecipeDraft import java.util.UUID import javax.inject.Inject -import javax.inject.Singleton -@Singleton class ModelMapperImpl @Inject constructor() : ModelMapper { diff --git a/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperModule.kt b/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperModule.kt index 15e3e73..0523a70 100644 --- a/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperModule.kt +++ b/model_mapper/src/main/kotlin/gq/kirmanak/mealient/model_mapper/ModelMapperModule.kt @@ -4,13 +4,11 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface ModelMapperModule { @Binds - @Singleton fun bindModelMapper(impl: ModelMapperImpl): ModelMapper } \ No newline at end of file diff --git a/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLogger.kt b/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLogger.kt index dd67afb..76e3a06 100644 --- a/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLogger.kt +++ b/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLogger.kt @@ -3,9 +3,7 @@ package gq.kirmanak.mealient.test import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.logging.MessageSupplier import javax.inject.Inject -import javax.inject.Singleton -@Singleton class FakeLogger @Inject constructor() : Logger { override fun v(throwable: Throwable?, tag: String?, messageSupplier: MessageSupplier) { print("V", throwable, messageSupplier) diff --git a/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLoggingModule.kt b/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLoggingModule.kt index 98d97f3..8021399 100644 --- a/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLoggingModule.kt +++ b/testing/src/main/kotlin/gq/kirmanak/mealient/test/FakeLoggingModule.kt @@ -6,7 +6,6 @@ import dagger.hilt.components.SingletonComponent import dagger.hilt.testing.TestInstallIn import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.logging.LoggingModule -import javax.inject.Singleton @Module @TestInstallIn( @@ -16,6 +15,5 @@ import javax.inject.Singleton interface FakeLoggingModule { @Binds - @Singleton fun bindFakeLogger(impl: FakeLogger): Logger } \ No newline at end of file diff --git a/ui/src/main/kotlin/gq/kirmanak/mealient/ui/UiModule.kt b/ui/src/main/kotlin/gq/kirmanak/mealient/ui/UiModule.kt index 21bc0f8..4440254 100644 --- a/ui/src/main/kotlin/gq/kirmanak/mealient/ui/UiModule.kt +++ b/ui/src/main/kotlin/gq/kirmanak/mealient/ui/UiModule.kt @@ -4,13 +4,11 @@ import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) interface UiModule { @Binds - @Singleton fun bindActivityUiStateController(impl: ActivityUiStateControllerImpl): ActivityUiStateController } \ No newline at end of file