From f027de8c2e7c37ec1f06f1925c6a83c27e7a7ac0 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sat, 3 Oct 2026 14:31:24 +0600 Subject: [PATCH] Look up library item sources and download counts once per library update --- .../tachiyomi/ui/library/LibraryViewModel.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryViewModel.kt index 53334628a..ab4a3ba3a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryViewModel.kt @@ -405,17 +405,22 @@ class LibraryViewModel( getLibraryItemPreferencesFlow(), downloadCache.changes, ) { libraryManga, preferences, _ -> + val sources = libraryManga + .mapTo(mutableSetOf()) { it.manga.source } + .associateWith { sourceManager.getOrStub(it) } libraryManga.map { manga -> + val source = sources.getValue(manga.manga.source) + val downloadCount = downloadManager.getDownloadCount(manga.manga) LibraryItem( libraryManga = manga, - downloadCount = downloadManager.getDownloadCount(manga.manga), + downloadCount = downloadCount, unreadCount = manga.unreadCount, isLocal = manga.manga.isLocal(), - sourceName = sourceManager.getOrStub(manga.manga.source).name.lowercase(), - sourceLanguage = sourceManager.getOrStub(manga.manga.source).lang, + sourceName = source.name.lowercase(), + sourceLanguage = source.lang, badges = LibraryItem.Badges( downloadCount = if (preferences.downloadBadge) { - downloadManager.getDownloadCount(manga.manga) + downloadCount } else { 0 }, @@ -430,7 +435,7 @@ class LibraryViewModel( false }, sourceLanguage = if (preferences.languageBadge) { - sourceManager.getOrStub(manga.manga.source).lang + source.lang } else { "" },