Convert tracker add/update/login methods to coroutines

This commit is contained in:
arkon
2020-12-24 17:50:28 -05:00
parent 6fcf6ae1f5
commit ea33179a95
15 changed files with 152 additions and 190 deletions
@@ -8,6 +8,9 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.util.lang.await
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.launchUI
import eu.kanade.tachiyomi.util.system.toast
import rx.Observable
import rx.Subscription
@@ -107,19 +110,22 @@ class TrackPresenter(
}
private fun updateRemote(track: Track, service: TrackService) {
service.update(track)
.flatMap { db.insertTrack(track).asRxObservable() }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeFirst(
{ view, _ -> view.onRefreshDone() },
{ view, error ->
view.onRefreshError(error)
launchIO {
try {
service.update(track)
db.insertTrack(track).await()
launchUI {
view!!.onRefreshDone()
}
} catch (e: Throwable) {
launchUI {
view!!.onRefreshError(e)
// Restart on error to set old values
fetchTrackings()
}
)
}
}
}
fun setStatus(item: TrackItem, index: Int) {