From 520846c75eae53d4adda8b593246d0478555d222 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Wed, 15 Mar 2023 17:40:52 -0400 Subject: [PATCH] Fix double page progress when changing orientation (#799) * Fix double page when changing orientation * Fix requested page, when device config changes when app is in BG * Cleanup on save reader logic --- .../kanade/tachiyomi/ui/reader/ReaderViewModel.kt | 3 +++ .../tachiyomi/ui/reader/viewer/pager/Pager.kt | 13 +++++++++++++ .../tachiyomi/ui/reader/viewer/pager/PagerViewer.kt | 3 +++ 3 files changed, 19 insertions(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 770ed064e..ba3e1a747 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -614,6 +614,9 @@ class ReaderViewModel( * If incognito mode isn't on or has at least 1 tracker */ private suspend fun saveChapterProgress(readerChapter: ReaderChapter) { + // SY --> + readerChapter.requestedPage = readerChapter.chapter.last_page_read + // SY <-- if (!incognitoMode || hasTrackers) { val chapter = readerChapter.chapter getCurrentChapter()?.requestedPage = chapter.last_page_read diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt index 87c1e1678..be45eec3d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/Pager.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer.pager import android.content.Context +import android.os.Parcelable import android.view.HapticFeedbackConstants import android.view.KeyEvent import android.view.MotionEvent @@ -27,6 +28,18 @@ open class Pager( */ var longTapListener: ((MotionEvent) -> Boolean)? = null + // SY --> + var isRestoring = false + + override fun onRestoreInstanceState(state: Parcelable?) { + isRestoring = true + val currentItem = currentItem + super.onRestoreInstanceState(state) + setCurrentItem(currentItem, false) + isRestoring = false + } + // SY <-- + /** * Gesture listener that implements tap and long tap events. */ diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 8057e6683..eda2723b6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -86,6 +86,9 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { private val pagerListener = object : ViewPager.SimpleOnPageChangeListener() { override fun onPageSelected(position: Int) { + // SY --> + if (pager.isRestoring) return + // SY <-- if (activity.isScrollingThroughPages.not()) { activity.hideMenu() }