|
@@ -31,30 +31,33 @@ class DelayedTrackingUpdateJob(context: Context, workerParams: WorkerParameters)
|
|
|
val trackManager = Injekt.get<TrackManager>()
|
|
|
val delayedTrackingStore = Injekt.get<DelayedTrackingStore>()
|
|
|
|
|
|
- withIOContext {
|
|
|
- val tracks = delayedTrackingStore.getItems().mapNotNull {
|
|
|
- val track = getTracks.awaitOne(it.trackId)
|
|
|
- if (track == null) {
|
|
|
- delayedTrackingStore.remove(it.trackId)
|
|
|
+ val results = withIOContext {
|
|
|
+ delayedTrackingStore.getItems()
|
|
|
+ .mapNotNull {
|
|
|
+ val track = getTracks.awaitOne(it.trackId)
|
|
|
+ if (track == null) {
|
|
|
+ delayedTrackingStore.remove(it.trackId)
|
|
|
+ }
|
|
|
+ track?.copy(lastChapterRead = it.lastChapterRead.toDouble())
|
|
|
}
|
|
|
- track
|
|
|
- }
|
|
|
-
|
|
|
- tracks.forEach { track ->
|
|
|
- try {
|
|
|
- val service = trackManager.getService(track.syncId)
|
|
|
- if (service != null && service.isLogged) {
|
|
|
- service.update(track.toDbTrack(), true)
|
|
|
- insertTrack.await(track)
|
|
|
+ .mapNotNull { track ->
|
|
|
+ try {
|
|
|
+ val service = trackManager.getService(track.syncId)
|
|
|
+ if (service != null && service.isLogged) {
|
|
|
+ logcat(LogPriority.DEBUG) { "Updating delayed track item: ${track.id}, last chapter read: ${track.lastChapterRead}" }
|
|
|
+ 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 {
|