|
@@ -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())
|
|
|
}
|
|
|
}
|
|
|
|