From 8988f08243c41f2cc192c24d47dfb53208439655 Mon Sep 17 00:00:00 2001 From: lijia Date: Sat, 4 Feb 2023 14:18:52 +0800 Subject: [PATCH] feat: apply advanceSearch through `rawKeyword | key1:value1 | key2:value2 ...` in keyword --- .../ehviewer/client/data/ListUrlBuilder.kt | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 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 5255f6848..d211a43da 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 @@ -283,13 +283,6 @@ data class ListUrlBuilder( if (this.category != EhUtils.NONE) { ub.addQuery("f_cats", category.inv() and EhConfig.ALL_CATEGORY) } - // Search key - mKeyword?.run { - val keyword = trim { it <= ' ' } - if (keyword.isNotEmpty()) { - ub.addQuery("f_search", encodeUTF8(this)) - } - } mSHash?.let { ub.addQuery("f_shash", it) } @@ -302,6 +295,19 @@ data class ListUrlBuilder( mNext?.let { ub.addQuery("next", it) } + // Search key + // the settings of ub:UrlBuilder may be overwritten by following Advance search + StringUtils.split(mKeyword, '|')?.forEachIndexed { idx, keyword -> + val keyword = keyword.trim { it <= ' ' } + when (idx) { + 0 -> keyword.takeIf { it.isNotEmpty() }?.let { ub.addQuery("f_search", encodeUTF8(it)) } + else -> keyword.indexOf(':').takeIf { it >= 0 }?.run { + val key = keyword.substring(0, this).trim { it <= ' ' } + val value = keyword.substring(this + 1).trim { it <= ' ' } + ub.addQuery(key, encodeUTF8(value)) + } + } + } // Advance search if (advanceSearch != -1) { ub.addQuery("advsearch", "1")