From cdb1d8fe12575087a7aa3ce0114ea5e6604a1e2b Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 24 Oct 2021 17:32:45 +0300 Subject: [PATCH] Fix manga cover in downloads queue --- .../kotatsu/download/ui/DownloadItemAD.kt | 19 ++++++++++++------- .../kotatsu/download/ui/DownloadsActivity.kt | 3 ++- .../kotatsu/download/ui/DownloadsAdapter.kt | 4 +++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadItemAD.kt b/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadItemAD.kt index 649b67342..20724d769 100644 --- a/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadItemAD.kt +++ b/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadItemAD.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.download.ui import androidx.core.view.isVisible +import coil.ImageLoader import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -10,12 +11,11 @@ import org.koitharu.kotatsu.R import org.koitharu.kotatsu.databinding.ItemDownloadBinding import org.koitharu.kotatsu.download.domain.DownloadManager import org.koitharu.kotatsu.utils.JobStateFlow -import org.koitharu.kotatsu.utils.ext.format -import org.koitharu.kotatsu.utils.ext.getDisplayMessage -import org.koitharu.kotatsu.utils.ext.setIndeterminateCompat +import org.koitharu.kotatsu.utils.ext.* fun downloadItemAD( scope: CoroutineScope, + coil: ImageLoader, ) = adapterDelegateViewBinding, JobStateFlow, ItemDownloadBinding>( { inflater, parent -> ItemDownloadBinding.inflate(inflater, parent, false) } ) { @@ -24,11 +24,16 @@ fun downloadItemAD( bind { job?.cancel() - job = item.onEach { state -> + job = item.onFirst { state -> + binding.imageViewCover.newImageRequest(state.manga.coverUrl) + .referer(state.manga.publicUrl) + .placeholder(state.cover) + .fallback(R.drawable.ic_placeholder) + .error(R.drawable.ic_placeholder) + .allowRgb565(true) + .enqueueWith(coil) + }.onEach { state -> binding.textViewTitle.text = state.manga.title - binding.imageViewCover.setImageDrawable( - state.cover ?: getDrawable(R.drawable.ic_placeholder) - ) when (state) { is DownloadManager.State.Cancelling -> { binding.textViewStatus.setText(R.string.cancelling_) diff --git a/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsActivity.kt index 5b39881ed..b9f3695da 100644 --- a/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsActivity.kt @@ -11,6 +11,7 @@ import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import org.koin.android.ext.android.get import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.databinding.ActivityDownloadsBinding import org.koitharu.kotatsu.download.ui.service.DownloadService @@ -22,7 +23,7 @@ class DownloadsActivity : BaseActivity() { super.onCreate(savedInstanceState) setContentView(ActivityDownloadsBinding.inflate(layoutInflater)) supportActionBar?.setDisplayHomeAsUpEnabled(true) - val adapter = DownloadsAdapter(lifecycleScope) + val adapter = DownloadsAdapter(lifecycleScope, get()) binding.recyclerView.setHasFixedSize(true) binding.recyclerView.adapter = adapter LifecycleAwareServiceConnection.bindService( diff --git a/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsAdapter.kt b/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsAdapter.kt index e6998f894..325180a79 100644 --- a/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsAdapter.kt +++ b/app/src/main/java/org/koitharu/kotatsu/download/ui/DownloadsAdapter.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.download.ui import androidx.recyclerview.widget.DiffUtil +import coil.ImageLoader import com.hannesdorfmann.adapterdelegates4.AsyncListDifferDelegationAdapter import kotlinx.coroutines.CoroutineScope import org.koitharu.kotatsu.download.domain.DownloadManager @@ -8,10 +9,11 @@ import org.koitharu.kotatsu.utils.JobStateFlow class DownloadsAdapter( scope: CoroutineScope, + coil: ImageLoader, ) : AsyncListDifferDelegationAdapter>(DiffCallback()) { init { - delegatesManager.addDelegate(downloadItemAD(scope)) + delegatesManager.addDelegate(downloadItemAD(scope, coil)) setHasStableIds(true) }