Improve DelayedTrackerStore (#8109)

* Improve DelayedTrackerStore

* Review changes

(cherry picked from commit ad84a8c3e9bd56025ab59beb5c024a7b7d6e2b35)
This commit is contained in:
AntsyLich 2022-09-29 19:20:07 +06:00 committed by Jobobby04
parent 9f0ea91634
commit 54dcb640bb
3 changed files with 10 additions and 10 deletions

View File

@ -25,9 +25,9 @@ class DelayedTrackingStore(context: Context) {
} }
} }
fun clear() { fun remove(track: Track) {
preferences.edit { preferences.edit {
clear() remove(track.id.toString())
} }
} }

View File

@ -14,9 +14,8 @@ import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.interactor.InsertTrack
import eu.kanade.domain.track.model.toDbTrack import eu.kanade.domain.track.model.toDbTrack
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.util.lang.withIOContext
import eu.kanade.tachiyomi.util.system.logcat import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import logcat.LogPriority import logcat.LogPriority
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
@ -33,9 +32,9 @@ 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>()
withContext(Dispatchers.IO) { withIOContext {
val tracks = delayedTrackingStore.getItems().mapNotNull { val tracks = delayedTrackingStore.getItems().mapNotNull {
val manga = getManga.await(it.mangaId) ?: return@withContext val manga = getManga.await(it.mangaId) ?: return@withIOContext
getTracks.await(manga.id) getTracks.await(manga.id)
.find { track -> track.id == it.trackId } .find { track -> track.id == it.trackId }
?.copy(lastChapterRead = it.lastChapterRead.toDouble()) ?.copy(lastChapterRead = it.lastChapterRead.toDouble())
@ -48,12 +47,11 @@ class DelayedTrackingUpdateJob(context: Context, workerParams: WorkerParameters)
service.update(track.toDbTrack(), true) service.update(track.toDbTrack(), true)
insertTrack.await(track) insertTrack.await(track)
} }
delayedTrackingStore.remove(track)
} catch (e: Exception) { } catch (e: Exception) {
logcat(LogPriority.ERROR, e) logcat(LogPriority.ERROR, e)
} }
} }
delayedTrackingStore.clear()
} }
return Result.success() return Result.success()

View File

@ -1066,12 +1066,14 @@ class ReaderPresenter(
// for a while. The view can still be garbage collected. // for a while. The view can still be garbage collected.
async { async {
runCatching { runCatching {
if (context.isOnline()) { try {
if (!context.isOnline()) error("Couldn't update tracker as device is offline")
service.update(updatedTrack.toDbTrack(), true) service.update(updatedTrack.toDbTrack(), true)
insertTrack.await(updatedTrack) insertTrack.await(updatedTrack)
} else { } catch (e: Exception) {
delayedTrackingStore.addItem(updatedTrack) delayedTrackingStore.addItem(updatedTrack)
DelayedTrackingUpdateJob.setupTask(context) DelayedTrackingUpdateJob.setupTask(context)
throw e
} }
} }
} }