Fix checking downloads banner showing up incorrectly

This commit is contained in:
arkon 2023-01-14 20:04:29 -05:00
parent 58ebf14691
commit 5b5eb92184
2 changed files with 11 additions and 8 deletions

View file

@ -21,17 +21,15 @@ import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.shareIn
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.take
import kotlinx.coroutines.withTimeout
import logcat.LogPriority
import uy.kohesive.injekt.Injekt
@ -72,10 +70,9 @@ class DownloadCache(
*/
private var lastRenew = 0L
private var renewalJob: Job? = null
val isRenewing = changes
.map { renewalJob?.isActive ?: false }
.distinctUntilChanged()
.take(2) // We only care about initial renewal
private val _isInitializing = MutableStateFlow(false)
val isInitializing = _isInitializing
.debounce(1000L) // Don't notify if it finishes quickly enough
.stateIn(scope, SharingStarted.WhileSubscribed(), false)
@ -272,6 +269,10 @@ class DownloadCache(
}
renewalJob = scope.launchIO {
if (lastRenew == 0L) {
_isInitializing.emit(true)
}
var sources = getSources()
// Try to wait until extensions and sources have loaded
@ -326,6 +327,8 @@ class DownloadCache(
}
}
.awaitAll()
_isInitializing.emit(false)
}.also {
it.invokeOnCompletion(onCancelling = true) { exception ->
if (exception != null && exception !is CancellationException) {

View file

@ -162,7 +162,7 @@ class MainActivity : BaseActivity() {
setComposeContent {
val incognito by preferences.incognitoMode().collectAsState()
val downloadOnly by preferences.downloadedOnly().collectAsState()
val indexing by downloadCache.isRenewing.collectAsState()
val indexing by downloadCache.isInitializing.collectAsState()
// Set statusbar color considering the top app state banner
val systemUiController = rememberSystemUiController()