Temporary fix checking for new chapters on large collections #584
This commit is contained in:
@@ -31,6 +31,7 @@ import javax.inject.Inject
|
|||||||
import javax.inject.Provider
|
import javax.inject.Provider
|
||||||
|
|
||||||
private const val NO_ID = 0L
|
private const val NO_ID = 0L
|
||||||
|
private const val MAX_QUERY_IDS = 100
|
||||||
|
|
||||||
@Reusable
|
@Reusable
|
||||||
class TrackingRepository @Inject constructor(
|
class TrackingRepository @Inject constructor(
|
||||||
@@ -65,7 +66,14 @@ class TrackingRepository @Inject constructor(
|
|||||||
|
|
||||||
suspend fun getTracks(mangaList: Collection<Manga>): List<MangaTracking> {
|
suspend fun getTracks(mangaList: Collection<Manga>): List<MangaTracking> {
|
||||||
val ids = mangaList.mapToSet { it.id }
|
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<Long>()
|
val idSet = HashSet<Long>()
|
||||||
val result = ArrayList<MangaTracking>(mangaList.size)
|
val result = ArrayList<MangaTracking>(mangaList.size)
|
||||||
for (item in mangaList) {
|
for (item in mangaList) {
|
||||||
|
|||||||
Reference in New Issue
Block a user