Эх сурвалжийг харах

Directly pass read chapter when updating tracker

arkon 5 жил өмнө
parent
commit
b642e019e8

+ 5 - 15
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

@@ -319,7 +319,7 @@ class ReaderPresenter(
         selectedChapter.chapter.last_page_read = page.index
         if (selectedChapter.pages?.lastIndex == page.index) {
             selectedChapter.chapter.read = true
-            updateTrackLastChapterRead()
+            updateTrackChapterRead(selectedChapter)
             enqueueDeleteReadChapters(selectedChapter)
         }
 
@@ -554,21 +554,11 @@ class ReaderPresenter(
      * Starts the service that updates the last chapter read in sync services. This operation
      * will run in a background thread and errors are ignored.
      */
-    private fun updateTrackLastChapterRead() {
+    private fun updateTrackChapterRead(readerChapter: ReaderChapter) {
         if (!preferences.autoUpdateTrack()) return
-        val viewerChapters = viewerChaptersRelay.value ?: return
         val manga = manga ?: return
 
-        val currChapter = viewerChapters.currChapter.chapter
-        val prevChapter = viewerChapters.prevChapter?.chapter
-
-        // Get the last chapter read from the reader.
-        val lastChapterRead = if (currChapter.read)
-            currChapter.chapter_number.toInt()
-        else if (prevChapter != null && prevChapter.read)
-            prevChapter.chapter_number.toInt()
-        else
-            return
+        val chapterRead = readerChapter.chapter.chapter_number.toInt()
 
         val trackManager = Injekt.get<TrackManager>()
 
@@ -576,8 +566,8 @@ class ReaderPresenter(
                 .flatMapCompletable { trackList ->
                     Completable.concat(trackList.map { track ->
                         val service = trackManager.getService(track.sync_id)
-                        if (service != null && service.isLogged && lastChapterRead > track.last_chapter_read) {
-                            track.last_chapter_read = lastChapterRead
+                        if (service != null && service.isLogged && chapterRead > track.last_chapter_read) {
+                            track.last_chapter_read = chapterRead
 
                             // We wan't these to execute even if the presenter is destroyed and leaks
                             // for a while. The view can still be garbage collected.