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 21b187d45..b07cd4716 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 @@ -35,7 +35,7 @@ data class ListUrlBuilder( private var jumpTo: String? = null, private var range: Int = 0, var category: Int = EhUtils.NONE, - private var mKeyword: String? = null, + var keyword: String? = null, var hash: String? = null, var language: Int = -1, var advanceSearch: Int = -1, @@ -69,16 +69,10 @@ data class ListUrlBuilder( jumpTo = date } - var keyword: String? - get() = if (MODE_UPLOADER == mode) "uploader:$mKeyword" else mKeyword - set(keyword) { - mKeyword = keyword - } - constructor(q: QuickSearch) : this( mode = q.mode, category = q.category, - mKeyword = q.keyword, + keyword = q.keyword, advanceSearch = q.advanceSearch, minRating = q.minRating, pageFrom = q.pageFrom, @@ -90,7 +84,7 @@ data class ListUrlBuilder( name = name, mode = mode, category = category, - keyword = mKeyword, + keyword = keyword, advanceSearch = advanceSearch, minRating = minRating, pageFrom = pageFrom, @@ -107,7 +101,7 @@ data class ListUrlBuilder( if (q.category != this.category) { return false } - if (q.keyword != mKeyword) { + if (q.keyword != keyword) { return false } if (q.advanceSearch != advanceSearch) { @@ -129,7 +123,7 @@ data class ListUrlBuilder( jumpTo = params["seek"], range = params["range"]?.toIntOrNull() ?: 0, category = params["f_cats"]?.toIntOrNull()?.let(EhUtils::invCategory) ?: EhUtils.NONE, - mKeyword = params["f_search"], + keyword = params["f_search"], ) { if (params["advsearch"] == "1") { advanceSearch = 0 @@ -160,7 +154,7 @@ data class ListUrlBuilder( if (category > 0) { addQueryParameter("f_cats", "${EhUtils.invCategory(category)}") } - val query = mKeyword?.let { keyword -> + val query = keyword?.let { keyword -> if (language == -1 || "gid:" in keyword || "l:" in keyword || "language:" in keyword) { keyword } else { @@ -214,7 +208,7 @@ data class ListUrlBuilder( }.buildString() MODE_UPLOADER, MODE_TAG -> { val path = if (mode == MODE_UPLOADER) "uploader" else "tag" - ehUrl(listOf(path, requireNotNull(mKeyword))) { + ehUrl(listOf(path, requireNotNull(keyword))) { addQueryParameterIfNotBlank("prev", prev) addQueryParameterIfNotBlank("next", next) addQueryParameterIfNotBlank("seek", jumpTo) @@ -226,7 +220,7 @@ data class ListUrlBuilder( addQueryParameter("f_shash", requireNotNull(hash)) }.buildString() MODE_TOPLIST -> ehUrl("toplist.php", EhUrl.DOMAIN_E) { - addQueryParameter("tl", requireNotNull(mKeyword)) + addQueryParameter("tl", requireNotNull(keyword)) addQueryParameterIfNotBlank("p", jumpTo) }.buildString() else -> throw IllegalStateException("Unexpected value: $mode") diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt index d99247d0f..5e079705c 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt @@ -48,7 +48,7 @@ object GalleryListUrlParser { ListUrlBuilder( mode = ListUrlBuilder.MODE_TOPLIST, jumpTo = url.parameters["p"], - mKeyword = tl, + keyword = tl, ) } else { null diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt index a0b22a3da..b8c522f4e 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -300,7 +300,7 @@ class MainActivity : AppCompatActivity() { if ("text/plain" == type) { val keyword = intent.getStringExtra(Intent.EXTRA_TEXT) if (keyword != null && !navWithUrl(keyword)) { - navigate(ListUrlBuilder(mKeyword = keyword).asDst()) + navigate(ListUrlBuilder(keyword = keyword).asDst()) } } else if (type != null && type.startsWith("image/")) { val uri = intent.getParcelableExtraCompat(Intent.EXTRA_STREAM) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt index 54971af36..a1a90bc72 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryCommentsScreen.kt @@ -409,7 +409,7 @@ fun AnimatedVisibilityScope.GalleryCommentsScreen(gid: Long, navigator: Destinat navigate( ListUrlBuilder( mode = ListUrlBuilder.MODE_UPLOADER, - mKeyword = item.user, + keyword = item.user, ).asDst(), ) }, diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt index a736e066e..bd3a76e84 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt @@ -215,7 +215,7 @@ fun GalleryDetailContent( if (uploader.isNullOrEmpty() || disowned) { return } - navigate(ListUrlBuilder(mode = ListUrlBuilder.MODE_UPLOADER, mKeyword = uploader).asDst()) + navigate(ListUrlBuilder(mode = ListUrlBuilder.MODE_UPLOADER, keyword = uploader).asDst()) } fun onGalleryInfoCardClick() { @@ -529,21 +529,21 @@ fun BelowHeader(galleryDetail: GalleryDetail, voteTag: VoteTag) { navigate( ListUrlBuilder( mode = ListUrlBuilder.MODE_NORMAL, - mKeyword = "\"" + keyword + "\"", + keyword = "\"" + keyword + "\"", ).asDst(), ) } else if (artistTag != null) { navigate( ListUrlBuilder( mode = ListUrlBuilder.MODE_TAG, - mKeyword = artistTag, + keyword = artistTag, ).asDst(), ) } else if (null != galleryDetail.uploader) { navigate( ListUrlBuilder( mode = ListUrlBuilder.MODE_UPLOADER, - mKeyword = galleryDetail.uploader, + keyword = galleryDetail.uploader, ).asDst(), ) } @@ -721,7 +721,7 @@ fun BelowHeader(galleryDetail: GalleryDetail, voteTag: VoteTag) { val upTag = stringResource(R.string.tag_vote_up) val downTag = stringResource(R.string.tag_vote_down) val withDraw = stringResource(R.string.tag_vote_withdraw) - fun search(tag: String) = navigate(ListUrlBuilder(mode = ListUrlBuilder.MODE_TAG, mKeyword = tag).asDst()) + fun search(tag: String) = navigate(ListUrlBuilder(mode = ListUrlBuilder.MODE_TAG, keyword = tag).asDst()) GalleryTags( tagGroups = tags, onTagClick = ::search, 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 e182601b8..35354a7b3 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 @@ -147,7 +147,7 @@ fun AnimatedVisibilityScope.WhatshotScreen(navigator: DestinationsNavigator) = G @Destination @Composable -fun AnimatedVisibilityScope.ToplistScreen(navigator: DestinationsNavigator) = GalleryListScreen(ListUrlBuilder(MODE_TOPLIST, mKeyword = Settings.recentToplist), navigator) +fun AnimatedVisibilityScope.ToplistScreen(navigator: DestinationsNavigator) = GalleryListScreen(ListUrlBuilder(MODE_TOPLIST, keyword = Settings.recentToplist), navigator) @Destination @Composable @@ -172,10 +172,14 @@ fun AnimatedVisibilityScope.GalleryListScreen( LaunchedEffect(urlBuilder) { if (urlBuilder.category != EhUtils.NONE) category = urlBuilder.category - var keyword = urlBuilder.keyword.takeUnless { urlBuilder.mode == MODE_TOPLIST }.orEmpty() - if (urlBuilder.mode == MODE_TAG) { - keyword = wrapTagKeyword(keyword) - } + val keyword = urlBuilder.keyword?.let { keyword -> + when (urlBuilder.mode) { + MODE_UPLOADER -> "uploader:\"$keyword\"" + MODE_TAG -> wrapTagKeyword(keyword) + MODE_TOPLIST -> "" + else -> keyword + } + }.orEmpty() searchFieldState.setTextAndPlaceCursorAtEnd(keyword) } @@ -217,7 +221,7 @@ fun AnimatedVisibilityScope.GalleryListScreen( ListItem( modifier = Modifier.padding(horizontal = 4.dp).clip(CardDefaults.shape).clickable { Settings.recentToplist = keyword - urlBuilder = ListUrlBuilder(MODE_TOPLIST, mKeyword = keyword) + urlBuilder = ListUrlBuilder(MODE_TOPLIST, keyword = keyword) data.refresh() fabHidden = false launch { sheetState.close() } @@ -641,6 +645,7 @@ private fun getSuitableTitleForUrlBuilder(urlBuilder: ListUrlBuilder, appName: B val canTranslate = Settings.showTagTranslations.value && EhTagDatabase.translatable && EhTagDatabase.initialized wrapTagKeyword(keyword, canTranslate) } + MODE_UPLOADER -> "uploader:\"$keyword\"" else -> keyword } } else if (category == EhUtils.NONE && urlBuilder.advanceSearch == -1) {