Fix library not loading when not logged in to any tracker (#8629)

This commit is contained in:
Ivan Iskandar 2022-11-27 09:37:22 +07:00 committed by GitHub
parent 28bceffc6f
commit 217b03a292
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -52,6 +52,7 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
@ -417,13 +418,17 @@ class LibraryScreenModel(
*/ */
private fun getTrackingFilterFlow(): Flow<Map<Long, Int>> { private fun getTrackingFilterFlow(): Flow<Map<Long, Int>> {
val loggedServices = trackManager.services.filter { it.isLogged } val loggedServices = trackManager.services.filter { it.isLogged }
val a = loggedServices return if (loggedServices.isNotEmpty()) {
.map { libraryPreferences.filterTracking(it.id.toInt()).changes() } val prefFlows = loggedServices
.toTypedArray() .map { libraryPreferences.filterTracking(it.id.toInt()).changes() }
return combine(*a) { .toTypedArray()
loggedServices combine(*prefFlows) {
.mapIndexed { index, trackService -> trackService.id to it[index] } loggedServices
.toMap() .mapIndexed { index, trackService -> trackService.id to it[index] }
.toMap()
}
} else {
flowOf(emptyMap())
} }
} }