diff --git a/app/src/main/java/com/hippo/ehviewer/EhDB.kt b/app/src/main/java/com/hippo/ehviewer/EhDB.kt index 2e8f4bee2..e9a54d0cb 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhDB.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhDB.kt @@ -172,7 +172,6 @@ object EhDB { suspend fun insertQuickSearch(quickSearch: QuickSearch) { val dao = db.quickSearchDao() - quickSearch.id = null quickSearch.time = System.currentTimeMillis() quickSearch.id = dao.insert(quickSearch) } 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 0e1a1d94e..bd21ec468 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 @@ -81,6 +81,7 @@ data class ListUrlBuilder( } fun set(q: QuickSearch) { + reset() mode = q.mode this.category = q.category mKeyword = q.keyword @@ -88,21 +89,20 @@ data class ListUrlBuilder( minRating = q.minRating pageFrom = q.pageFrom pageTo = q.pageTo - imagePath = null - isUseSimilarityScan = false - isOnlySearchCovers = false + mNext = q.name.substringAfterLast('@', "").takeIf { it.isNotEmpty() } } - fun toQuickSearch(): QuickSearch { - val q = QuickSearch() - q.mode = mode - q.category = this.category - q.keyword = mKeyword - q.advanceSearch = advanceSearch - q.minRating = minRating - q.pageFrom = pageFrom - q.pageTo = pageTo - return q + fun toQuickSearch(name: String): QuickSearch { + return QuickSearch( + name = name, + mode = mode, + category = category, + keyword = mKeyword, + advanceSearch = advanceSearch, + minRating = minRating, + pageFrom = pageFrom, + pageTo = pageTo, + ) } fun equalsQuickSearch(q: QuickSearch?): Boolean { diff --git a/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt b/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt index 23eb2ac89..bae11bb26 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/QuickSearch.kt @@ -11,7 +11,7 @@ data class QuickSearch( var id: Long? = null, @ColumnInfo(name = "NAME") - var name: String? = null, + var name: String, @ColumnInfo(name = "MODE") var mode: Int = 0, 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 29413a11b..5eb188453 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 @@ -532,13 +532,13 @@ class GalleryListScene : SearchBarScene() { return } val gi = mAdapter?.peek(binding.recyclerView.layoutManager!!.firstVisibleItemPosition) - val next = if (gi != null) "@" + (gi.gid + 1) else null + val next = gi?.gid?.plus(1) // Check duplicate for (q in mQuickSearchList) { if (mUrlBuilder.equalsQuickSearch(q)) { - val i = q.name!!.lastIndexOf("@") - if (i != -1 && q.name!!.substring(i) == next) { + val nextStr = q.name.substringAfterLast('@', "").takeIf { it.isNotEmpty() } + if (nextStr?.toLongOrNull() == next) { showTip(getString(R.string.duplicate_quick_search, q.name), LENGTH_LONG) return } @@ -568,7 +568,7 @@ class GalleryListScene : SearchBarScene() { return@launchIO } if (checked[0] && next != null) { - text += next + text += "@$next" Settings.qSSaveProgress = true } else { Settings.qSSaveProgress = false @@ -585,8 +585,7 @@ class GalleryListScene : SearchBarScene() { } builder.setError(null) dialog.dismiss() - val quickSearch = mUrlBuilder.toQuickSearch() - quickSearch.name = text + val quickSearch = mUrlBuilder.toQuickSearch(text) EhDB.insertQuickSearch(quickSearch) mQuickSearchList.add(quickSearch) withUIContext { @@ -913,10 +912,9 @@ class GalleryListScene : SearchBarScene() { if (!mIsTopList) { holder.itemView.setOnClickListener { val q = mQuickSearchList[holder.bindingAdapterPosition] - val i = q.name!!.lastIndexOf("@") - val goto = if (i != -1) q.name!!.substring(i + 1) else null - val args = ListUrlBuilder().apply { set(q) }.toStartArgs().apply { putString(KEY_GOTO, goto) } - navAnimated(R.id.galleryListScene, args, true) + mUrlBuilder.set(q) + onUpdateUrlBuilder() + mAdapter?.refresh() setState(State.NORMAL) closeDrawer(GravityCompat.END) }