Save current page state on configuration change

Fixes #8881

The actual issue is that the ViewModel migration actually differs between what the current `init` block
and previous `onSave` methods did; where the `init` block does not get triggered on saving the
instance on config changes.

Not entirely sure why onSaveInstanceState was explicitly avoided for config changes before, but we
just do it all the time now and end up updating the requestedPage with the current page.
This commit is contained in:
arkon 2023-01-21 20:18:12 -05:00
parent e28b015580
commit 2ebc8d9ae5
2 changed files with 4 additions and 5 deletions

View file

@ -269,9 +269,7 @@ class ReaderActivity : BaseActivity() {
*/ */
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
outState.putBoolean(::menuVisible.name, menuVisible) outState.putBoolean(::menuVisible.name, menuVisible)
if (!isChangingConfigurations) { viewModel.onSaveInstanceState()
viewModel.onSaveInstanceStateNonConfigurationChange()
}
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
} }

View file

@ -232,10 +232,10 @@ class ReaderViewModel(
} }
/** /**
* Called when the activity is saved and not changing configurations. It updates the database * Called when the activity is saved. It updates the database
* to persist the current progress of the active chapter. * to persist the current progress of the active chapter.
*/ */
fun onSaveInstanceStateNonConfigurationChange() { fun onSaveInstanceState() {
val currentChapter = getCurrentChapter() ?: return val currentChapter = getCurrentChapter() ?: return
viewModelScope.launchNonCancellable { viewModelScope.launchNonCancellable {
saveChapterProgress(currentChapter) saveChapterProgress(currentChapter)
@ -512,6 +512,7 @@ class ReaderViewModel(
private suspend fun saveChapterProgress(readerChapter: ReaderChapter) { private suspend fun saveChapterProgress(readerChapter: ReaderChapter) {
if (!incognitoMode || hasTrackers) { if (!incognitoMode || hasTrackers) {
val chapter = readerChapter.chapter val chapter = readerChapter.chapter
getCurrentChapter()?.requestedPage = chapter.last_page_read
updateChapter.await( updateChapter.await(
ChapterUpdate( ChapterUpdate(
id = chapter.id!!, id = chapter.id!!,