From 091cc0acb2dd6c91ea10141cde16b4604419fd11 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Thu, 6 May 2021 15:59:45 -0400 Subject: [PATCH] Fixed #790 Old functionality returns on demand --- .../java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt | 4 ++-- .../java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt | 6 +++++- .../java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt | 2 +- .../kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt | 4 ++-- .../tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index ebc9afcfb2..80c18aab89 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -1026,11 +1026,11 @@ class ReaderActivity : * Moves the viewer to the given page [index]. It does nothing if the viewer is null or the * page is not found. */ - fun moveToPageIndex(index: Int) { + fun moveToPageIndex(index: Int, animated: Boolean = true) { val viewer = viewer ?: return val currentChapter = presenter.getCurrentChapter() ?: return val page = currentChapter.pages?.getOrNull(index) ?: return - viewer.moveToPage(page) + viewer.moveToPage(page, animated) } fun refreshChapters() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 411f27b6e5..aa8798fd7d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.executeOnIO +import eu.kanade.tachiyomi.util.system.launchUI import eu.kanade.tachiyomi.util.system.withUIContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -412,12 +413,15 @@ class ReaderPresenter( Timber.d("Loading ${chapter.url}") activeChapterSubscription?.unsubscribe() + val lastPage = if (chapter.pages_left <= 1) 0 else chapter.last_page_read activeChapterSubscription = getLoadObservable(loader, ReaderChapter(chapter)) .doOnSubscribe { isLoadingAdjacentChapterRelay.call(true) } .doOnUnsubscribe { isLoadingAdjacentChapterRelay.call(false) } .subscribeFirst( { view, _ -> - view.moveToPageIndex(0) + scope.launchUI { + view.moveToPageIndex(lastPage, false) + } view.refreshChapters() }, { _, _ -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt index 905e12dc7b..f511108c32 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt @@ -29,7 +29,7 @@ interface BaseViewer { /** * Tells this viewer to move to the given [page]. */ - fun moveToPage(page: ReaderPage) + fun moveToPage(page: ReaderPage, animated: Boolean = true) /** * Moves to the next page. 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 6cf80af8e9..1b50b52ab2 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 @@ -273,12 +273,12 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { /** * Tells this viewer to move to the given [page]. */ - override fun moveToPage(page: ReaderPage) { + override fun moveToPage(page: ReaderPage, animated: Boolean) { Timber.d("moveToPage ${page.number}") val position = adapter.joinedItems.indexOfFirst { it.first == page || it.second == page } if (position != -1) { val currentPosition = pager.currentItem - pager.setCurrentItem(position, true) + pager.setCurrentItem(position, animated) // manually call onPageChange since ViewPager listener is not triggered in this case if (currentPosition == position) { onPageChange(position) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 1307eccdf4..fd9d200595 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -236,7 +236,7 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals /** * Tells this viewer to move to the given [page]. */ - override fun moveToPage(page: ReaderPage) { + override fun moveToPage(page: ReaderPage, animated: Boolean) { Timber.d("moveToPage") val position = adapter.items.indexOf(page) if (position != -1) {