From 9131f6f8cb1f490d780e3ad647bc2e6b7152a583 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 24 Jun 2023 16:48:19 +0800 Subject: [PATCH] Cleanup ListUrlBuilder --- .../java/com/hippo/ehviewer/client/EhUrl.kt | 7 ++-- .../ehviewer/client/data/FavListUrlBuilder.kt | 14 ++++---- .../ehviewer/client/data/ListUrlBuilder.kt | 35 ++++++++++--------- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt b/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt index 076bf7532..bcb7e70fe 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhUrl.kt @@ -119,8 +119,8 @@ object EhUrl { fun getGalleryDetailUrl(gid: Long, token: String?, index: Int, allComment: Boolean) = ehUrl { addPathSegments("g/$gid/$token/") - if (index != 0) addEncodedQueryParameter("p", index.toString()) - if (allComment) addEncodedQueryParameter("hc", 1.toString()) + if (index != 0) addQueryParameter("p", "$index") + if (allComment) addQueryParameter("hc", "1") }.toString() fun getGalleryMultiPageViewerUrl(gid: Long, token: String) = ehUrl { @@ -146,3 +146,6 @@ object EhUrl { inline fun httpsUrl(builder: HttpUrl.Builder.() -> Unit) = HttpUrl.Builder().apply(builder).scheme("https").build() inline fun ehUrl(builder: HttpUrl.Builder.() -> Unit) = httpsUrl { apply(builder).host(EhUrl.domain) } +fun HttpUrl.Builder.addQueryParameterIfNotBlank(name: String, value: String?) = apply { + if (!value.isNullOrBlank()) addQueryParameter(name, value) +} diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt b/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt index 5cc2b31ef..d3b362c54 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/data/FavListUrlBuilder.kt @@ -17,8 +17,8 @@ package com.hippo.ehviewer.client.data import android.os.Parcelable import com.hippo.ehviewer.client.EhUrl +import com.hippo.ehviewer.client.addQueryParameterIfNotBlank import com.hippo.ehviewer.client.ehUrl -import com.hippo.ehviewer.util.encodeUTF8 import kotlinx.parcelize.Parcelize @Parcelize @@ -37,14 +37,14 @@ class FavListUrlBuilder( fun build() = ehUrl { addPathSegment(EhUrl.FAV_PATH) if (isValidFavCat(favCat)) { - addEncodedQueryParameter("favcat", favCat.toString()) + addQueryParameter("favcat", "$favCat") } else if (favCat == FAV_CAT_ALL) { - addEncodedQueryParameter("favcat", "all") + addQueryParameter("favcat", "all") } - keyword?.takeIf { it.isNotBlank() }?.let { addEncodedQueryParameter("f_search", encodeUTF8(it)) } - mPrev?.takeIf { it.isNotEmpty() }?.let { addEncodedQueryParameter("prev", it) } - mNext?.takeIf { it.isNotEmpty() }?.let { addEncodedQueryParameter("next", it) } - jumpTo?.takeIf { it.isNotEmpty() }?.let { addEncodedQueryParameter("seek", it) } + addQueryParameterIfNotBlank("f_search", keyword) + addQueryParameterIfNotBlank("prev", mPrev) + addQueryParameterIfNotBlank("next", mNext) + addQueryParameterIfNotBlank("seek", jumpTo) }.toString() companion object { 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 4b3f35995..caec5f41f 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 @@ -19,6 +19,7 @@ import android.os.Parcelable import androidx.annotation.IntDef import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.EhUtils +import com.hippo.ehviewer.client.addQueryParameterIfNotBlank import com.hippo.ehviewer.client.ehUrl import com.hippo.ehviewer.dao.QuickSearch import com.hippo.ehviewer.ui.legacy.AdvanceSearchTable @@ -275,55 +276,55 @@ data class ListUrlBuilder( if (category != EhUtils.NONE) { addEncodedQueryParameter("f_cats", (category.inv() and EhUtils.ALL_CATEGORY).toString()) } - hash?.let { addEncodedQueryParameter("f_shash", it) } - mJumpTo?.let { addEncodedQueryParameter("seek", it) } - mPrev?.let { addEncodedQueryParameter("prev", it) } - mNext?.let { addEncodedQueryParameter("next", it) } + addQueryParameterIfNotBlank("f_shash", hash) + addQueryParameterIfNotBlank("prev", mPrev) + addQueryParameterIfNotBlank("next", mNext) + addQueryParameterIfNotBlank("seek", mJumpTo) // Search key // the settings of ub:UrlBuilder may be overwritten by following Advance search mKeyword?.split('|')?.forEachIndexed { idx, kwd -> val keyword = kwd.trim { it <= ' ' } when (idx) { - 0 -> keyword.takeIf { it.isNotEmpty() }?.let { addEncodedQueryParameter("f_search", encodeUTF8(it)) } + 0 -> addQueryParameterIfNotBlank("f_search", keyword) else -> keyword.indexOf(':').takeIf { it >= 0 }?.run { val key = keyword.substring(0, this).trim { it <= ' ' } val value = keyword.substring(this + 1).trim { it <= ' ' } - addEncodedQueryParameter(key, encodeUTF8(value)) + addQueryParameterIfNotBlank(key, value) } } } // Advance search if (advanceSearch != -1) { - addEncodedQueryParameter("advsearch", "1") + addQueryParameter("advsearch", "1") if (advanceSearch and AdvanceSearchTable.SH != 0) { - addEncodedQueryParameter("f_sh", "on") + addQueryParameter("f_sh", "on") } if (advanceSearch and AdvanceSearchTable.STO != 0) { - addEncodedQueryParameter("f_sto", "on") + addQueryParameter("f_sto", "on") } if (advanceSearch and AdvanceSearchTable.SFL != 0) { - addEncodedQueryParameter("f_sfl", "on") + addQueryParameter("f_sfl", "on") } if (advanceSearch and AdvanceSearchTable.SFU != 0) { - addEncodedQueryParameter("f_sfu", "on") + addQueryParameter("f_sfu", "on") } if (advanceSearch and AdvanceSearchTable.SFT != 0) { - addEncodedQueryParameter("f_sft", "on") + addQueryParameter("f_sft", "on") } // Set min star if (minRating != -1) { - addEncodedQueryParameter("f_sr", "on") - addEncodedQueryParameter("f_srdd", minRating.toString()) + addQueryParameter("f_sr", "on") + addQueryParameter("f_srdd", "$minRating") } // Pages if (pageFrom != -1 || pageTo != -1) { - addEncodedQueryParameter("f_sp", "on") - addEncodedQueryParameter( + addQueryParameter("f_sp", "on") + addQueryParameter( "f_spf", (if (pageFrom != -1) pageFrom.toString() else "").toString(), ) - addEncodedQueryParameter( + addQueryParameter( "f_spt", (if (pageTo != -1) pageTo.toString() else "").toString(), )