From a718510c8924e517dde9795187f1662e46bad48d Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Sat, 6 Jul 2024 14:48:16 +0800 Subject: [PATCH] Implicitly add language filter tag This partially reverts commit 673c1837e9cc6371136d28f317a39554c6419860. --- .../ehviewer/client/data/ListUrlBuilder.kt | 15 ++++++++++++++- .../ehviewer/ui/screen/GalleryListScreen.kt | 18 +++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/data/ListUrlBuilder.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/data/ListUrlBuilder.kt index 77e9763c9..58603dbdb 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/data/ListUrlBuilder.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/data/ListUrlBuilder.kt @@ -42,6 +42,7 @@ data class ListUrlBuilder( var category: Int = EhUtils.NONE, private var mKeyword: String? = null, var hash: String? = null, + var language: Int = -1, var advanceSearch: Int = -1, var minRating: Int = -1, var pageFrom: Int = -1, @@ -263,7 +264,19 @@ data class ListUrlBuilder( if (category > 0) { addQueryParameter("f_cats", (category.inv() and EhUtils.ALL_CATEGORY).toString()) } - addQueryParameterIfNotBlank("f_search", mKeyword) + val query = mKeyword?.let { keyword -> + if (language == -1 || "gid:" in keyword || "l:" in keyword || "language:" in keyword) { + keyword + } else { + val tag = GalleryInfo.S_LANG_TAGS[language] + if (keyword.isNotEmpty()) { + "$tag $keyword" + } else { + tag + } + } + } + addQueryParameterIfNotBlank("f_search", query) addQueryParameterIfNotBlank("prev", mPrev) addQueryParameterIfNotBlank("next", mNext) addQueryParameterIfNotBlank("seek", mJumpTo) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt index c86195045..7960f8dd7 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt @@ -96,7 +96,6 @@ import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.EhTagDatabase import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.client.data.BaseGalleryInfo -import com.hippo.ehviewer.client.data.GalleryInfo.Companion.S_LANG_TAGS import com.hippo.ehviewer.client.data.ListUrlBuilder import com.hippo.ehviewer.client.data.ListUrlBuilder.Companion.MODE_IMAGE_SEARCH import com.hippo.ehviewer.client.data.ListUrlBuilder.Companion.MODE_NORMAL @@ -265,6 +264,7 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = c val toplists = remember { entries zip values } val quickSearchName = getSuitableTitleForUrlBuilder(urlBuilder, false) var saveProgress by Settings.qSSaveProgress.asMutableState() + var languageFilter by Settings.languageFilter.asMutableState() fun getFirstVisibleItemIndex() = if (listMode == 0) { listState.firstVisibleItemIndex @@ -419,10 +419,14 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = c ListItem( modifier = Modifier.clickable { if (urlBuilder.mode == MODE_WHATS_HOT) { - val builder = ListUrlBuilder(item) + val builder = ListUrlBuilder(item).apply { + language = languageFilter + } navigator.navigate(builder.asDst()) } else { - urlBuilder = ListUrlBuilder(item) + urlBuilder = ListUrlBuilder(item).apply { + language = languageFilter + } data.refresh() } showSearchLayout = false @@ -497,7 +501,6 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = c override val destination = ProgressScreenDestination(gid, pToken, page) } - var languageFilter by Settings.languageFilter.asMutableState() val selectImageFirst = stringResource(R.string.select_image_first) fun onApplySearch(query: String) = launchIO { val builder = ListUrlBuilder() @@ -506,12 +509,9 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = c // If it's MODE_SUBSCRIPTION, keep it val newMode = if (oldMode == MODE_SUBSCRIPTION) MODE_SUBSCRIPTION else MODE_NORMAL builder.mode = newMode - builder.keyword = if ("gid:" in query || "l:" in query || "language:" in query) { - query - } else { - S_LANG_TAGS.getOrNull(languageFilter)?.plus(" $query") ?: query - } + builder.keyword = query builder.category = category + builder.language = languageFilter builder.advanceSearch = advancedSearchOption.advanceSearch builder.minRating = advancedSearchOption.minRating builder.pageFrom = advancedSearchOption.fromPage