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) {