diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt index b46c80e90..3095c643b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt @@ -552,7 +552,13 @@ class LibraryScreenModel( // KMK --> .filterNot { !showHiddenCategories && it.hidden } // KMK <-- - .associateWith { groupCache[it.id]?.toList().orEmpty() } + .associateWith { + groupCache[it.id]?.toList() + // KMK --> + ?.distinct() + // KMK <-- + .orEmpty() + } } // KMK --> LibraryGroup.UNGROUPED -> { @@ -1019,13 +1025,15 @@ class LibraryScreenModel( fun removeMangas(mangas: List, deleteFromLibrary: Boolean, deleteChapters: Boolean) { screenModelScope.launchNonCancellable { if (deleteFromLibrary) { - val toDelete = mangas.map { - it.removeCovers(coverCache) - MangaUpdate( - favorite = false, - id = it.id, - ) - } + val toDelete = mangas + .distinctBy { it.id } + .map { + it.removeCovers(coverCache) + MangaUpdate( + favorite = false, + id = it.id, + ) + } updateManga.awaitAll(toDelete) } @@ -1424,6 +1432,9 @@ class LibraryScreenModel( // KMK <-- ) } + // KMK --> + .mapValues { (_, values) -> values.distinct() } + // KMK <-- } LibraryGroup.BY_SOURCE -> { // KMK --> @@ -1484,7 +1495,7 @@ class LibraryScreenModel( ) } // KMK --> - .mapValues { (_, libraryItem) -> libraryItem.fastMap { it.id } } + .mapValues { (_, libraryItem) -> libraryItem.fastMap { it.id }.distinct() } // KMK <-- } else -> emptyMap()