Use queued last chapter read number when performing delayed tracker update

Fixes #8876

(cherry picked from commit f7f2072621)
This commit is contained in:
arkon 2023-02-26 16:48:04 -05:00
parent c4ab2b4675
commit d2dd34c2e5

View file

@ -31,30 +31,33 @@ class DelayedTrackingUpdateJob(context: Context, workerParams: WorkerParameters)
val trackManager = Injekt.get<TrackManager>() val trackManager = Injekt.get<TrackManager>()
val delayedTrackingStore = Injekt.get<DelayedTrackingStore>() val delayedTrackingStore = Injekt.get<DelayedTrackingStore>()
withIOContext { val results = withIOContext {
val tracks = delayedTrackingStore.getItems().mapNotNull { delayedTrackingStore.getItems()
val track = getTracks.awaitOne(it.trackId) .mapNotNull {
if (track == null) { val track = getTracks.awaitOne(it.trackId)
delayedTrackingStore.remove(it.trackId) if (track == null) {
} delayedTrackingStore.remove(it.trackId)
track }
} track?.copy(lastChapterRead = it.lastChapterRead.toDouble())
}
tracks.forEach { track -> .mapNotNull { track ->
try { try {
val service = trackManager.getService(track.syncId) val service = trackManager.getService(track.syncId)
if (service != null && service.isLogged) { if (service != null && service.isLogged) {
service.update(track.toDbTrack(), true) logcat(LogPriority.DEBUG) { "Updating delayed track item: ${track.id}, last chapter read: ${track.lastChapterRead}" }
insertTrack.await(track) service.update(track.toDbTrack(), true)
insertTrack.await(track)
}
delayedTrackingStore.remove(track.id)
null
} catch (e: Exception) {
logcat(LogPriority.ERROR, e)
false
} }
delayedTrackingStore.remove(track.id)
} catch (e: Exception) {
logcat(LogPriority.ERROR, e)
} }
}
} }
return Result.success() return if (results.isNotEmpty()) Result.failure() else Result.success()
} }
companion object { companion object {