From f0add59f99b7e21f1b1e1e4ebd7ab0fa5d477d8a Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 5 Jan 2022 15:03:55 +0200 Subject: [PATCH] Fix smooth cover loading in details --- .../kotatsu/details/ui/DetailsFragment.kt | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt index 12d96d469..844cb06ac 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt @@ -13,6 +13,7 @@ import androidx.core.text.parseAsHtml import androidx.core.view.isVisible import androidx.core.view.updatePadding import coil.ImageLoader +import coil.request.ImageRequest import coil.util.CoilUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -61,14 +62,8 @@ class DetailsFragment : BaseFragment(), View.OnClickList private fun onMangaUpdated(manga: Manga) { with(binding) { - // Main - imageViewCover.newImageRequest(manga.largeCoverUrl ?: manga.coverUrl) - .referer(manga.publicUrl) - .fallback(R.drawable.ic_placeholder) - .placeholderMemoryCacheKey(CoilUtils.metadata(imageViewCover)?.memoryCacheKey) - .lifecycle(viewLifecycleOwner) - .enqueueWith(coil) + loadCover(manga) textViewTitle.text = manga.title textViewSubtitle.textAndVisible = manga.altTitle textViewAuthor.textAndVisible = manga.author @@ -253,4 +248,22 @@ class DetailsFragment : BaseFragment(), View.OnClickList } ) } + + private fun loadCover(manga: Manga) { + val currentCover = binding.imageViewCover.drawable + val request = ImageRequest.Builder(context ?: return) + .target(binding.imageViewCover) + if (currentCover != null) { + request.data(manga.largeCoverUrl ?: return) + .placeholderMemoryCacheKey(CoilUtils.metadata(binding.imageViewCover)?.memoryCacheKey) + .fallback(currentCover) + } else { + request.crossfade(true) + .data(manga.coverUrl) + .fallback(R.drawable.ic_placeholder) + } + request.referer(manga.publicUrl) + .lifecycle(viewLifecycleOwner) + .enqueueWith(coil) + } } \ No newline at end of file