From 10760095729bd1157d5566f015e05f6a619a2268 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 19 Dec 2023 17:32:12 +0200 Subject: [PATCH] Temporary fix checking for new chapters on large collections #584 --- .../kotatsu/tracker/domain/TrackingRepository.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt index 663fd9e19..c42c792e0 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt @@ -31,6 +31,7 @@ import javax.inject.Inject import javax.inject.Provider private const val NO_ID = 0L +private const val MAX_QUERY_IDS = 100 @Reusable class TrackingRepository @Inject constructor( @@ -65,7 +66,14 @@ class TrackingRepository @Inject constructor( suspend fun getTracks(mangaList: Collection): List { val ids = mangaList.mapToSet { it.id } - val tracks = db.getTracksDao().findAll(ids).groupBy { it.mangaId } + val dao = db.getTracksDao() + val tracks = if (ids.size <= MAX_QUERY_IDS) { + dao.findAll(ids) + } else { + // TODO split tracks in the worker + ids.windowed(MAX_QUERY_IDS, MAX_QUERY_IDS, true) + .flatMap { dao.findAll(it) } + }.groupBy { it.mangaId } val idSet = HashSet() val result = ArrayList(mangaList.size) for (item in mangaList) {