Use queued last chapter read number when performing delayed tracker update

Fixes #8876
This commit is contained in:
arkon 2023-02-26 16:48:04 -05:00
parent 5b2e937d5f
commit f7f2072621

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()
.mapNotNull {
val track = getTracks.awaitOne(it.trackId) val track = getTracks.awaitOne(it.trackId)
if (track == null) { if (track == null) {
delayedTrackingStore.remove(it.trackId) delayedTrackingStore.remove(it.trackId)
} }
track track?.copy(lastChapterRead = it.lastChapterRead.toDouble())
} }
.mapNotNull { track ->
tracks.forEach { 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) {
logcat(LogPriority.DEBUG) { "Updating delayed track item: ${track.id}, last chapter read: ${track.lastChapterRead}" }
service.update(track.toDbTrack(), true) service.update(track.toDbTrack(), true)
insertTrack.await(track) insertTrack.await(track)
} }
delayedTrackingStore.remove(track.id) delayedTrackingStore.remove(track.id)
null
} catch (e: Exception) { } catch (e: Exception) {
logcat(LogPriority.ERROR, e) logcat(LogPriority.ERROR, e)
false
} }
} }
} }
return Result.success() return if (results.isNotEmpty()) Result.failure() else Result.success()
} }
companion object { companion object {