mirror of
https://github.com/mihonapp/mihon.git
synced 2026-10-19 23:22:26 -07:00
Load all tracks in one query for statistics
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user