Load all tracks in one query for statistics

This commit is contained in:
AntsyLich
2026-10-07 19:59:52 +06:00
parent 5df78e305e
commit 179bfaca72
4 changed files with 18 additions and 3 deletions
@@ -26,7 +26,7 @@ import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_HAS_U
import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_NON_COMPLETED
import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_NON_READ
import tachiyomi.domain.manga.interactor.GetLibraryManga
import tachiyomi.domain.track.interactor.GetTracks
import tachiyomi.domain.track.interactor.GetTracksPerManga
import tachiyomi.domain.track.model.Track
import tachiyomi.source.local.isLocal
@@ -37,7 +37,7 @@ class StatsViewModel(
private val downloadManager: DownloadManager,
private val getLibraryManga: GetLibraryManga,
private val getTotalReadDuration: GetTotalReadDuration,
private val getTracks: GetTracks,
private val getTracksPerManga: GetTracksPerManga,
private val preferences: LibraryPreferences,
private val trackerManager: TrackerManager,
) : ViewModel() {
@@ -114,8 +114,11 @@ class StatsViewModel(
private suspend fun getMangaTrackMap(libraryManga: List<LibraryManga>): Map<Long, List<Track>> {
val loggedInTrackerIds = loggedInTrackers.map { it.id }.toHashSet()
if (loggedInTrackerIds.isEmpty()) return emptyMap()
val tracksPerManga = getTracksPerManga.await()
return libraryManga.associate { manga ->
val tracks = getTracks.await(manga.id)
val tracks = tracksPerManga[manga.id].orEmpty()
.fastFilter { it.trackerId in loggedInTrackerIds }
manga.id to tracks