Save current chapter progress when navigating to adjacent chapters

Fixes #9295

(cherry picked from commit 776d36caf1)
This commit is contained in:
arkon 2023-04-05 22:29:56 -04:00
parent 10973bf3cd
commit 4dd67e4348
2 changed files with 15 additions and 18 deletions

View File

@ -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)

View File

@ -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}" }