浏览代码

Save current chapter progress when navigating to adjacent chapters

Fixes #9295

(cherry picked from commit 776d36caf11cf29287e4cb86a6e64574a296f89c)
arkon 2 年之前
父节点
当前提交
4dd67e4348

+ 2 - 6
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt

@@ -99,10 +99,6 @@ import uy.kohesive.injekt.injectLazy
 import kotlin.math.abs
 import kotlin.math.max
 
-/**
- * Activity containing the reader of Tachiyomi. This activity is mostly a container of the
- * viewers, to which calls from the presenter or UI events are delegated.
- */
 class ReaderActivity : BaseActivity() {
 
     companion object {
@@ -661,7 +657,7 @@ class ReaderActivity : BaseActivity() {
      * Called from the presenter when a manga is ready. Used to instantiate the appropriate viewer
      * and the toolbar title.
      */
-    fun setManga(manga: Manga) {
+    private fun setManga(manga: Manga) {
         val prevViewer = viewer
 
         val viewerMode = ReadingModeType.fromPreference(viewModel.getMangaReadingMode(resolveDefault = false))
@@ -776,7 +772,7 @@ class ReaderActivity : BaseActivity() {
      * Called from the presenter if the initial load couldn't load the pages of the chapter. In
      * this case the activity is closed and a toast is shown to the user.
      */
-    fun setInitialChapterError(error: Throwable) {
+    private fun setInitialChapterError(error: Throwable) {
         logcat(LogPriority.ERROR, error)
         finish()
         toast(error.message)

+ 13 - 12
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt

@@ -201,17 +201,6 @@ class ReaderViewModel(
 
     private val incognitoMode = preferences.incognitoMode().get()
 
-    override fun onCleared() {
-        val currentChapters = state.value.viewerChapters
-        if (currentChapters != null) {
-            currentChapters.unref()
-            saveReadingProgress(currentChapters.currChapter)
-            chapterToDownload?.let {
-                downloadManager.addDownloadsToStartOfQueue(listOf(it))
-            }
-        }
-    }
-
     init {
         // To save state
         state.map { it.viewerChapters?.currChapter }
@@ -226,6 +215,17 @@ class ReaderViewModel(
             .launchIn(viewModelScope)
     }
 
+    override fun onCleared() {
+        val currentChapters = state.value.viewerChapters
+        if (currentChapters != null) {
+            currentChapters.unref()
+            saveReadingProgress(currentChapters.currChapter)
+            chapterToDownload?.let {
+                downloadManager.addDownloadsToStartOfQueue(listOf(it))
+            }
+        }
+    }
+
     /**
      * Called when the user pressed the back button and is going to leave the reader. Used to
      * trigger deletion of the downloaded chapters.
@@ -338,10 +338,11 @@ class ReaderViewModel(
     }
 
     /**
-     * Called when the user is going to load the prev/next chapter through the menu button.
+     * Called when the user is going to load the prev/next chapter through the toolbar buttons.
      */
     private suspend fun loadAdjacent(chapter: ReaderChapter) {
         val loader = loader ?: return
+        saveCurrentChapterReadingProgress()
 
         logcat { "Loading adjacent ${chapter.chapter.url}" }