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