Simplify RecipesPagingAdapter creation

This commit is contained in:
Kirill Kamakin
2022-11-05 11:06:21 +01:00
parent 1ee0456494
commit 7800d7e754
2 changed files with 11 additions and 13 deletions

View File

@@ -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

View File

@@ -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<RecipeSummaryEntity, RecipeViewHolder>(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)
}