fix: Download queue count not updating

Also, don't use raw integer for download badge colour
This commit is contained in:
Ahmad Ansori Palembani 2024-12-21 06:03:23 +07:00
parent 3606f67dba
commit 3787845893
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6

View file

@ -102,6 +102,7 @@ import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
import eu.kanade.tachiyomi.util.manga.MangaShortcutManager import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
import eu.kanade.tachiyomi.util.showNotificationPermissionPrompt import eu.kanade.tachiyomi.util.showNotificationPermissionPrompt
import eu.kanade.tachiyomi.util.system.contextCompatColor
import eu.kanade.tachiyomi.util.system.contextCompatDrawable import eu.kanade.tachiyomi.util.system.contextCompatDrawable
import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.e import eu.kanade.tachiyomi.util.system.e
@ -138,6 +139,7 @@ import kotlin.math.min
import kotlin.math.roundToLong import kotlin.math.roundToLong
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -458,8 +460,14 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
} }
} }
downloadManager.isDownloaderRunning.onEach(::downloadStatusChanged).launchIn(lifecycleScope) combine(
lifecycleScope downloadManager.isDownloaderRunning,
downloadManager.queueState,
) { isDownloading, queueState ->
isDownloading to queueState.size
}.onEach { (isDownloading, queueSize) ->
downloadStatusChanged(isDownloading, queueSize)
}.launchIn(lifecycleScope)
WindowCompat.setDecorFitsSystemWindows(window, false) WindowCompat.setDecorFitsSystemWindows(window, false)
setSupportActionBar(binding.toolbar) setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayShowCustomEnabled(true) supportActionBar?.setDisplayShowCustomEnabled(true)
@ -1503,17 +1511,17 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
} }
} }
fun BadgeDrawable.updateQueueSize(queueSize: Int) { private fun BadgeDrawable.updateQueueSize(queueSize: Int) {
number = queueSize number = queueSize
} }
fun downloadStatusChanged(downloading: Boolean) { private fun downloadStatusChanged(downloading: Boolean, queueSize: Int) {
lifecycleScope.launchUI { lifecycleScope.launchUI {
val hasQueue = downloading || downloadManager.hasQueue() val hasQueue = downloading || downloadManager.hasQueue()
if (hasQueue) { if (hasQueue) {
val badge = nav.getOrCreateBadge(R.id.nav_recents) val badge = nav.getOrCreateBadge(R.id.nav_recents)
badge.updateQueueSize(downloadManager.queueState.value.size) badge.updateQueueSize(queueSize)
if (downloading) badge.backgroundColor = -870219 else badge.backgroundColor = Color.GRAY badge.backgroundColor = if (downloading) contextCompatColor(R.attr.colorError) else Color.GRAY
showDLQueueTutorial() showDLQueueTutorial()
} else { } else {
nav.removeBadge(R.id.nav_recents) nav.removeBadge(R.id.nav_recents)