From fd45319715fd162bc3765f61d7d965edb864d07a Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sun, 13 Aug 2023 00:14:44 +0800 Subject: [PATCH] Fix toplist --- .../ehviewer/client/data/ListUrlBuilder.kt | 4 ++-- .../ehviewer/ui/scene/GalleryListScene.kt | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt index bd21ec468..138d9e1d3 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.kt @@ -70,8 +70,8 @@ data class ListUrlBuilder( mPrev = index?.takeUnless { isNext } } - fun setJumpTo(jumpTo: String?) { - mJumpTo = jumpTo + fun setJumpTo(jumpTo: Int) { + mJumpTo = jumpTo.takeUnless { it == 0 }?.toString() } var keyword: String? diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index 148f18855..9afe9462d 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -132,10 +132,10 @@ class VMStorage1 : ViewModel() { if (urlBuilder.mode == MODE_TOPLIST) { // TODO: Since we know total pages, let pager support jump val key = (params.key ?: urlBuilder.mJumpTo ?: "0").toInt() - val prev = if (key != 0) key - 1 else null - val next = if (key != 199) key + 1 else null + val prev = (key - 1).takeIf { it > 0 } + val next = (key + 1).takeIf { it < TOPLIST_PAGES } runSuspendCatching { - urlBuilder.setJumpTo(key.toString()) + urlBuilder.setJumpTo(key) EhEngine.getGalleryList(urlBuilder.build()) }.onFailure { return@withIOContext LoadResult.Error(it) @@ -461,10 +461,12 @@ class GalleryListScene : SearchBarScene() { 0 -> showGoToDialog() 1 -> { mUrlBuilder.setIndex(null, true) + mUrlBuilder.mJumpTo = null mAdapter?.refresh() } 2 -> { if (mIsTopList) { + mUrlBuilder.mJumpTo = "${TOPLIST_PAGES - 1}" mAdapter?.refresh() } else { mUrlBuilder.setIndex("1", false) @@ -651,9 +653,9 @@ class GalleryListScene : SearchBarScene() { private fun showGoToDialog() { mAdapter ?: return if (mIsTopList) { - val pages = 200 + val page = mUrlBuilder.mJumpTo?.toIntOrNull() ?: 0 val title = getString(R.string.go_to) - val hint = getString(R.string.go_to_hint, 1, 200) + val hint = getString(R.string.go_to_hint, page + 1, TOPLIST_PAGES) lifecycleScope.launch { val text = dialogState.awaitInputText( title = title, @@ -666,13 +668,13 @@ class GalleryListScene : SearchBarScene() { }.onFailure { return@awaitInputText getString(R.string.error_invalid_number) }.getOrThrow() - if (goTo < 0 || goTo >= pages) { + if (goTo !in 0..