diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt index 64fb48f..50342d0 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesFragment.kt @@ -21,7 +21,6 @@ import gq.kirmanak.mealient.extensions.refreshRequestFlow import gq.kirmanak.mealient.extensions.showLongToast import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.ui.activity.MainActivityViewModel -import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader import gq.kirmanak.mealient.ui.recipes.images.RecipePreloaderFactory import kotlinx.coroutines.flow.* import javax.inject.Inject @@ -36,9 +35,6 @@ class RecipesFragment : Fragment(R.layout.fragment_recipes) { @Inject lateinit var logger: Logger - @Inject - lateinit var recipeImageLoader: RecipeImageLoader - @Inject lateinit var recipePagingAdapterFactory: RecipesPagingAdapter.Factory @@ -66,9 +62,7 @@ class RecipesFragment : Fragment(R.layout.fragment_recipes) { private fun setupRecipeAdapter() { logger.v { "setupRecipeAdapter() called" } - val recipesAdapter = recipePagingAdapterFactory.build( - recipeImageLoader = recipeImageLoader, clickListener = ::navigateToRecipeInfo - ) + val recipesAdapter = recipePagingAdapterFactory.build { navigateToRecipeInfo(it) } with(binding.recipes) { adapter = recipesAdapter diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt index c2cb7af..cde6fb9 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/recipes/RecipesPagingAdapter.kt @@ -4,12 +4,12 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil +import dagger.hilt.android.scopes.FragmentScoped import gq.kirmanak.mealient.database.recipe.entity.RecipeSummaryEntity import gq.kirmanak.mealient.databinding.ViewHolderRecipeBinding import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.ui.recipes.images.RecipeImageLoader import javax.inject.Inject -import javax.inject.Singleton class RecipesPagingAdapter private constructor( private val logger: Logger, @@ -18,19 +18,23 @@ class RecipesPagingAdapter private constructor( private val clickListener: (RecipeSummaryEntity) -> Unit ) : PagingDataAdapter(RecipeDiffCallback) { - @Singleton + @FragmentScoped class Factory @Inject constructor( private val logger: Logger, private val recipeViewHolderFactory: RecipeViewHolder.Factory, + private val recipeImageLoader: RecipeImageLoader, ) { - fun build( - recipeImageLoader: RecipeImageLoader, - clickListener: (RecipeSummaryEntity) -> Unit, - ) = RecipesPagingAdapter(logger, recipeImageLoader, recipeViewHolderFactory, clickListener) + fun build(clickListener: (RecipeSummaryEntity) -> Unit) = RecipesPagingAdapter( + logger, + recipeImageLoader, + recipeViewHolderFactory, + clickListener + ) } override fun onBindViewHolder(holder: RecipeViewHolder, position: Int) { + logger.d { "onBindViewHolder() called with: holder = $holder, position = $position" } val item = getItem(position) holder.bind(item) }