diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index f04b63efb8..49c4de2e51 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -66,8 +66,10 @@ import kotlinx.coroutines.awaitAll import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.sync.Semaphore @@ -677,6 +679,12 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet WorkManager.getInstance(context).cancelAllWorkByTag(TAG) } + fun isRunningFlow(context: Context): Flow { + return WorkManager.getInstance(context).getWorkInfosByTagFlow(TAG).map { list -> + list.any { it.state == WorkInfo.State.RUNNING } + } + } + fun isRunning(context: Context): Boolean { val list = WorkManager.getInstance(context).getWorkInfosByTag(TAG).get() return list.any { it.state == WorkInfo.State.RUNNING } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt index 94f3077c9a..4a6fec9245 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt @@ -87,6 +87,8 @@ import eu.kanade.tachiyomi.util.view.snack import eu.kanade.tachiyomi.util.view.updateGradiantBGRadius import eu.kanade.tachiyomi.util.view.withFadeTransaction import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch import java.util.* import kotlin.math.max @@ -381,7 +383,11 @@ class RecentsController(bundle: Bundle? = null) : } }, ) - binding.swipeRefresh.isRefreshing = LibraryUpdateJob.isRunning(view.context) + viewScope.launch { + LibraryUpdateJob.isRunningFlow(view.context).collectLatest { + binding.swipeRefresh.isRefreshing = it + } + } binding.swipeRefresh.setOnRefreshListener { if (!LibraryUpdateJob.isRunning(view.context)) { snack?.dismiss() @@ -401,14 +407,6 @@ class RecentsController(bundle: Bundle? = null) : ) } } - addCallback( - object : BaseTransientBottomBar.BaseCallback() { - override fun onDismissed(transientBottomBar: Snackbar?, event: Int) { - super.onDismissed(transientBottomBar, event) - binding.swipeRefresh.isRefreshing = LibraryUpdateJob.isRunning(view.context) - } - }, - ) } LibraryUpdateJob.startNow(view.context) } @@ -576,7 +574,6 @@ class RecentsController(bundle: Bundle? = null) : } binding.progress.isVisible = false binding.recentsFrameLayout.alpha = 1f - binding.swipeRefresh.isRefreshing = LibraryUpdateJob.isRunning(view!!.context) adapter.removeAllScrollableHeaders() adapter.updateDataSet(recents) adapter.onLoadMoreComplete(null)