From 9e3ec996b48d1bdc3700ee3df743c7dadd77a9fd Mon Sep 17 00:00:00 2001 From: xihan123 Date: Fri, 1 Sep 2023 20:34:51 +0800 Subject: [PATCH] =?UTF-8?q?improvement:=20=E9=87=8D=E6=9E=84=20`=E5=B1=8F?= =?UTF-8?q?=E8=94=BD=E9=80=89=E9=A1=B9=E5=88=97=E8=A1=A8`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xihan123 --- .../main/kotlin/cn/xihan/qdds/HookEntry.kt | 52 ++---- .../main/kotlin/cn/xihan/qdds/Intercept.kt | 13 +- .../main/kotlin/cn/xihan/qdds/MainActivity.kt | 164 +++++------------- app/src/main/kotlin/cn/xihan/qdds/Option.kt | 25 ++- app/src/main/kotlin/cn/xihan/qdds/Shield.kt | 54 +++--- 5 files changed, 124 insertions(+), 184 deletions(-) diff --git a/app/src/main/kotlin/cn/xihan/qdds/HookEntry.kt b/app/src/main/kotlin/cn/xihan/qdds/HookEntry.kt index 1ab48a4..a4532c4 100644 --- a/app/src/main/kotlin/cn/xihan/qdds/HookEntry.kt +++ b/app/src/main/kotlin/cn/xihan/qdds/HookEntry.kt @@ -33,7 +33,6 @@ import com.highcapable.yukihookapi.hook.type.java.LongType import com.highcapable.yukihookapi.hook.type.java.StringClass import com.highcapable.yukihookapi.hook.type.java.UnitType import com.highcapable.yukihookapi.hook.xposed.proxy.IYukiHookXposedInit -import de.robv.android.xposed.XposedHelpers import org.json.JSONArray import org.json.JSONObject import java.util.concurrent.CopyOnWriteArrayList @@ -385,26 +384,28 @@ class HookEntry : IYukiHookXposedInit { if (optionEntity.viewHideOption.bookLastPageOptions.enableHideBookLastPage) { readBookLastPage( versionCode = versionCode, - shieldAlsoRead = isEnableShieldOption(16), - shieldSimilarRecommend = isEnableShieldOption(17), - shieldRecommendation = isEnableShieldOption(18), - hideCircle = optionEntity.viewHideOption.bookLastPageOptions.configurations.isEnabled( - optionEntity.viewHideOption.bookLastPageOptions.configurations[0].title + shieldAlsoRead = optionEntity.shieldOption.configurations.isSelectedByTitle("阅读-最后一页-看过此书的人还看过"), + shieldSimilarRecommend = optionEntity.shieldOption.configurations.isSelectedByTitle( + "阅读-最后一页-同类作品推荐" ), - hideAlsoRead = optionEntity.viewHideOption.bookLastPageOptions.configurations.isEnabled( - optionEntity.viewHideOption.bookLastPageOptions.configurations[1].title + shieldRecommendation = optionEntity.shieldOption.configurations.isSelectedByTitle("阅读-最后一页-推荐"), + hideCircle = optionEntity.viewHideOption.bookLastPageOptions.configurations.isSelectedByTitle( + "书友圈" ), - hideRecommendation = optionEntity.viewHideOption.bookLastPageOptions.configurations.isEnabled( - optionEntity.viewHideOption.bookLastPageOptions.configurations[2].title + hideAlsoRead = optionEntity.viewHideOption.bookLastPageOptions.configurations.isSelectedByTitle( + "看过此书的人还看过" ), - hideSimilarRecommend = optionEntity.viewHideOption.bookLastPageOptions.configurations.isEnabled( - optionEntity.viewHideOption.bookLastPageOptions.configurations[3].title + hideRecommendation = optionEntity.viewHideOption.bookLastPageOptions.configurations.isSelectedByTitle( + "推荐" ), - hideBookList = optionEntity.viewHideOption.bookLastPageOptions.configurations.isEnabled( - optionEntity.viewHideOption.bookLastPageOptions.configurations[4].title + hideSimilarRecommend = optionEntity.viewHideOption.bookLastPageOptions.configurations.isSelectedByTitle( + "同类作品推荐" ), - hideTryRead = optionEntity.viewHideOption.bookLastPageOptions.configurations.isEnabled( - optionEntity.viewHideOption.bookLastPageOptions.configurations[5].title + hideBookList = optionEntity.viewHideOption.bookLastPageOptions.configurations.isSelectedByTitle( + "收录此书的书单" + ), + hideTryRead = optionEntity.viewHideOption.bookLastPageOptions.configurations.isSelectedByTitle( + "试读" ), hideAdView = optionEntity.advOption.configurations.isSelectedByTitle("阅读页-最后一页-中间广告") ) @@ -436,9 +437,7 @@ class HookEntry : IYukiHookXposedInit { isEnableCustomSplash = optionEntity.splashOption.enableCustomSplash ) - if (optionEntity.shieldOption.shieldOptionValueSet.isNotEmpty()) { - shieldOption(versionCode, optionEntity.shieldOption.shieldOptionValueSet) - } + shieldOption(versionCode, optionEntity.shieldOption.configurations) if (optionEntity.shieldOption.enableQuickShieldDialog) { quickShield(versionCode) @@ -517,13 +516,6 @@ class HookEntry : IYukiHookXposedInit { optionEntity.shieldOption.bookTypeList } - /** - * 判断是否启用了屏蔽配置的选项 - * @param optionValue 选项的值 - */ - fun isEnableShieldOption(optionValue: Int) = - optionValue in optionEntity.shieldOption.shieldOptionValueSet - /** * 判断是否需要屏蔽 * @param bookName 书名-可空 @@ -574,14 +566,6 @@ class HookEntry : IYukiHookXposedInit { return false } - /** - * 解析关键词组 - * @param it 关键词组 - */ - fun parseKeyWordOption(it: String = ""): MutableSet = - it.split(";").filter { it.isNotBlank() }.map { it.replace(Regex(pattern = "\\s+"), "") } - .toMutableSet() - /** * 解析需要屏蔽的书籍列表 */ diff --git a/app/src/main/kotlin/cn/xihan/qdds/Intercept.kt b/app/src/main/kotlin/cn/xihan/qdds/Intercept.kt index 9ee21a2..47c93cc 100644 --- a/app/src/main/kotlin/cn/xihan/qdds/Intercept.kt +++ b/app/src/main/kotlin/cn/xihan/qdds/Intercept.kt @@ -23,7 +23,7 @@ fun PackageParam.interceptOption( ) { if (configurations.isEmpty()) return val interceptList = mutableListOf() - configurations.filter { it.selected }.forEach { selected -> + configurations.filter { it.selected }.takeIf { it.isNotEmpty() }?.forEach { selected -> when (selected.title) { "隐私政策更新弹框" -> interceptPrivacyPolicy(versionCode) "同意隐私政策弹框" -> interceptAgreePrivacyPolicy(versionCode) @@ -33,7 +33,7 @@ fun PackageParam.interceptOption( "阅读页水印" -> interceptReadBookPageWaterMark(versionCode) "发帖图片水印" -> interceptPostImageWatermark(versionCode) "自动跳转精选" -> interceptAutoJumpSelected(versionCode) - else -> interceptList.add(selected.title) + else -> interceptList += selected.title } } @@ -245,6 +245,7 @@ fun PackageParam.interceptPostImageWatermark(versionCode: Int) { } } } + else -> "发帖图片水印".printlnNotSupportVersion(versionCode) } } @@ -252,9 +253,9 @@ fun PackageParam.interceptPostImageWatermark(versionCode: Int) { /** * 拦截自动跳转精选 */ -fun PackageParam.interceptAutoJumpSelected(versionCode: Int){ - when(versionCode){ - in 980..994 -> { +fun PackageParam.interceptAutoJumpSelected(versionCode: Int) { + when (versionCode) { + in 980..994 -> { findClass("com.qidian.QDReader.ui.activity.MainGroupActivity").hook { injectMember { method { @@ -265,7 +266,7 @@ fun PackageParam.interceptAutoJumpSelected(versionCode: Int){ intercept() } } - } + } } } diff --git a/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt b/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt index ad18678..6de93b7 100644 --- a/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt +++ b/app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt @@ -441,8 +441,8 @@ fun TextSetting( fun CustomBookShelfTopImageOption( title: String, customBookShelfTopImageModel: OptionEntity.BookshelfOption.CustomBookShelfTopImageModel, - onValueChange: (OptionEntity.BookshelfOption.CustomBookShelfTopImageModel) -> Unit = {}, modifier: Modifier = Modifier, + onValueChange: (OptionEntity.BookshelfOption.CustomBookShelfTopImageModel) -> Unit = {} ) { val border01 = rememberMutableStateOf(value = customBookShelfTopImageModel.border01) val font = rememberMutableStateOf(value = customBookShelfTopImageModel.font) @@ -755,33 +755,26 @@ fun MainScreen( TextSetting(title = "主设置", showRightIcon = false, bigTitle = true) Column(modifier = Modifier.padding(4.dp)) { - SwitchSetting( - title = "自动签到", + SwitchSetting(title = "自动签到", checked = rememberMutableStateOf(value = HookEntry.optionEntity.mainOption.enableAutoSign), onCheckedChange = { HookEntry.optionEntity.mainOption.enableAutoSign = it - } - ) + }) - SwitchSetting( - title = "自动领取阅读积分", + SwitchSetting(title = "自动领取阅读积分", subTitle = "非后台领取,需要进到阅读积分页面", checked = rememberMutableStateOf(value = HookEntry.optionEntity.mainOption.enableReceiveReadingCreditsAutomatically), onCheckedChange = { HookEntry.optionEntity.mainOption.enableReceiveReadingCreditsAutomatically = it - } - ) + }) - SwitchSetting( - title = "发帖上传图片显示直链", + SwitchSetting(title = "发帖上传图片显示直链", subTitle = "图片上传完后会弹框", checked = rememberMutableStateOf(value = HookEntry.optionEntity.mainOption.enablePostToShowImageUrl), onCheckedChange = { - HookEntry.optionEntity.mainOption.enablePostToShowImageUrl = - it - } - ) + HookEntry.optionEntity.mainOption.enablePostToShowImageUrl = it + }) SwitchSetting(title = "本地至尊卡", @@ -850,14 +843,12 @@ fun MainScreen( } if (versionCode >= 896) { - SwitchSetting( - title = "试用模式弹框", + SwitchSetting(title = "试用模式弹框", subTitle = "开启后起点会弹出隐私策略的弹框,不同意后点开始试用,完了关闭该选项即可", checked = rememberMutableStateOf(value = HookEntry.optionEntity.mainOption.enableForceTrialMode), onCheckedChange = { HookEntry.optionEntity.mainOption.enableForceTrialMode = it - } - ) + }) /* SwitchSetting( @@ -875,14 +866,12 @@ fun MainScreen( if (versionCode >= 906) { val hideWelfare = rememberMutableStateOf(value = HookEntry.optionEntity.hideBenefitsOption.enableHideWelfare) - SwitchSetting( - title = "显示全部隐藏福利", + SwitchSetting(title = "显示全部隐藏福利", subTitle = "开启后去搜索页面随便搜索一个内容,然后下面这个配置显示位置即可\n如果下面没有选项先去搜索一下", checked = hideWelfare, onCheckedChange = { HookEntry.optionEntity.hideBenefitsOption.enableHideWelfare = it - } - ) + }) if (hideWelfare.value) { @@ -899,37 +888,31 @@ fun MainScreen( }, text = remoteHideWelfareList, onTextChange = { - HookEntry.optionEntity.hideBenefitsOption.remoteCHideWelfareList = - HookEntry.parseKeyWordOption(it) - }) + HookEntry.optionEntity.hideBenefitsOption.remoteCHideWelfareList = HookEntry.parseKeyWordOption(it) + } + ) if (remoteHideWelfareList.value.isNotBlank()) { - TextSetting( - title = "获取远程隐藏福利信息", + TextSetting(title = "获取远程隐藏福利信息", modifier = Modifier.padding(4.dp), onClick = { context.checkHideWelfareUpdate() - } - ) + }) } - TextSetting( - title = "隐藏福利显示位置列表", + TextSetting(title = "隐藏福利显示位置列表", modifier = Modifier.padding(4.dp), onClick = { context.multiChoiceSelector(HookEntry.optionEntity.hideBenefitsOption.configurations) - } - ) + }) - TextSetting( - title = "清空隐藏福利列表", + TextSetting(title = "清空隐藏福利列表", modifier = Modifier.padding(4.dp), onClick = { HookEntry.optionEntity.hideBenefitsOption.hideWelfareList.clear() updateOptionEntity() hideWelfare.value = false - } - ) + }) } } @@ -1141,8 +1124,7 @@ fun MainScreen( checked = rememberMutableStateOf(value = HookEntry.optionEntity.startImageOption.enableCustomLocalStartImage), subTitle = "启用后会重定向下载路径为:\"$splashPath\"\n随机所存在的图片参与启动图", onCheckedChange = { - HookEntry.optionEntity.startImageOption.enableCustomLocalStartImage = - it + HookEntry.optionEntity.startImageOption.enableCustomLocalStartImage = it }) if (HookEntry.optionEntity.startImageOption.officialLaunchMapList.isNotEmpty()) { @@ -1234,16 +1216,12 @@ fun MainScreen( ) ) - EditTextSetting(title = "填入网络图片直链", - subTitle = "以\";\"分隔", - right = { - Insert(list = customStartImageUrlList) - }, - text = customStartImageUrlList, - onTextChange = { - HookEntry.optionEntity.startImageOption.customStartImageUrlList = - HookEntry.parseKeyWordOption(it) - }) + EditTextSetting(title = "填入网络图片直链", subTitle = "以\";\"分隔", right = { + Insert(list = customStartImageUrlList) + }, text = customStartImageUrlList, onTextChange = { + HookEntry.optionEntity.startImageOption.customStartImageUrlList = + HookEntry.parseKeyWordOption(it) + }) } @@ -1280,7 +1258,8 @@ fun MainScreen( val customSplash = rememberMutableStateOf(value = HookEntry.optionEntity.splashOption.enableCustomSplash) - SwitchSetting(title = "启用自定义闪屏页", + SwitchSetting( + title = "启用自定义闪屏页", checked = customSplash, onCheckedChange = { HookEntry.optionEntity.splashOption.enableCustomSplash = it @@ -1381,52 +1360,7 @@ fun PurifyScreen( Column(modifier = Modifier.padding(4.dp)) { TextSetting(title = "屏蔽选项列表", onClick = { - val shieldOptionList = listOf( - "搜索-发现(热词)", - "搜索-热门作品榜", - "搜索-人气标签榜", - "搜索-为你推荐", - "精选-主页面", - "精选-分类", - "精选-分类-全部作品", - "精选-免费-免费推荐", - "精选-免费-新书入库", - "精选-畅销精选、主编力荐等更多", - "精选-新书强推、三江推荐", - "精选-排行榜", - "精选-新书", - "每日导读", - "精选-漫画", - "精选-漫画-其他", - "阅读-最后一页-看过此书的人还看过", - "阅读-最后一页-同类作品推荐", - "阅读-最后一页-推荐", - "分类-小编力荐、本周强推等更多" - ) - val checkedItems = BooleanArray(shieldOptionList.size) - if (HookEntry.optionEntity.shieldOption.shieldOptionValueSet.isNotEmpty()) { - safeRun { - shieldOptionList.forEachIndexed { index, _ -> - if (index in HookEntry.optionEntity.shieldOption.shieldOptionValueSet) { - checkedItems[index] = true - } - } - } - } - context.multiChoiceSelector( - shieldOptionList, checkedItems, "屏蔽选项列表" - ) { _, i, isChecked -> - checkedItems[i] = isChecked - }.doOnDismiss { - checkedItems.forEachIndexed { index, b -> - if (b) { - HookEntry.optionEntity.shieldOption.shieldOptionValueSet += index - } else { - HookEntry.optionEntity.shieldOption.shieldOptionValueSet -= index - } - } - updateOptionEntity() - } + context.multiChoiceSelector(HookEntry.optionEntity.shieldOption.configurations) }) SwitchSetting(title = "启用快速屏蔽弹窗", @@ -1441,8 +1375,7 @@ fun PurifyScreen( ";" ), ) - EditTextSetting( - title = "填入需要屏蔽的完整作者名称", + EditTextSetting(title = "填入需要屏蔽的完整作者名称", text = authorList, subTitle = "使用 \";\" 分隔", right = { @@ -1458,8 +1391,7 @@ fun PurifyScreen( ";" ) ) - EditTextSetting( - title = "填入需要屏蔽的书名关键词", + EditTextSetting(title = "填入需要屏蔽的书名关键词", text = bookNameList, subTitle = "注意:单字威力巨大!!!\n使用 \";\" 分隔", right = { @@ -1468,8 +1400,7 @@ fun PurifyScreen( onTextChange = { HookEntry.optionEntity.shieldOption.bookNameList = HookEntry.parseKeyWordOption(it) - } - ) + }) SwitchSetting(title = "启用书类型增强屏蔽", subTitle = "解除下面的限制改为包含关键词执行屏蔽\n例如:关键词为\"仙侠\"时,类型为\"古典仙侠\"的书也会被屏蔽", @@ -1481,8 +1412,7 @@ fun PurifyScreen( val bookTypeList = rememberMutableStateOf( value = HookEntry.optionEntity.shieldOption.bookTypeList.joinToString(";") ) - EditTextSetting( - title = "填入需要屏蔽的书类型", + EditTextSetting(title = "填入需要屏蔽的书类型", text = bookTypeList, subTitle = "必须匹配关键词才执行屏蔽\n使用 \";\" 分隔", right = { @@ -1491,8 +1421,7 @@ fun PurifyScreen( onTextChange = { HookEntry.optionEntity.shieldOption.bookTypeList = HookEntry.parseKeyWordOption(it) - } - ) + }) } } @@ -1520,7 +1449,8 @@ fun PurifyScreen( val enableSelectedHide = rememberMutableStateOf(value = HookEntry.optionEntity.viewHideOption.selectedOption.enableSelectedHide) - SwitchSetting(title = "精选-启用选项屏蔽", + SwitchSetting( + title = "精选-启用选项屏蔽", checked = enableSelectedHide, onCheckedChange = { HookEntry.optionEntity.viewHideOption.selectedOption.enableSelectedHide = it @@ -1646,7 +1576,8 @@ fun PurifyScreen( val hideDetail = rememberMutableStateOf(value = HookEntry.optionEntity.viewHideOption.bookDetailOptions.enableHideBookDetail) - SwitchSetting(title = "启用书籍详情-隐藏控件", + SwitchSetting( + title = "启用书籍详情-隐藏控件", checked = hideDetail, onCheckedChange = { HookEntry.optionEntity.viewHideOption.bookDetailOptions.enableHideBookDetail = @@ -2006,7 +1937,8 @@ fun AboutScreen( context.joinQQGroup("JdqL9prgQ3epIUed3weaEkJwtNgNQaWa") }) - TextSetting(title = "QD模块赞助群", + TextSetting( + title = "QD模块赞助群", subTitle = "575801108\n赞助后加群主好友发记录", onClick = { context.alertDialog { @@ -2060,14 +1992,12 @@ fun AboutScreen( } } - TextSetting( - title = "起点内部版本号", + TextSetting(title = "起点内部版本号", subTitle = "$versionCode", showRightIcon = false, onClick = { - } - ) + }) TextSetting(title = "模块版本号", subTitle = BuildConfig.VERSION_NAME, @@ -2111,14 +2041,12 @@ fun Disclaimers( .verticalScroll(rememberScrollState()), horizontalAlignment = Alignment.CenterHorizontally, ) { - Text( - text = stringResource(id = R.string.disclaimers_title), + Text(text = stringResource(id = R.string.disclaimers_title), style = MaterialTheme.typography.titleLarge, fontWeight = FontWeight.Bold, modifier = Modifier .padding(bottom = 8.dp) - .clickable { remainingTime = 0L } - ) + .clickable { remainingTime = 0L }) Spacer(modifier = Modifier.height(16.dp)) Text(text = stringResource(id = R.string.disclaimers_message)) diff --git a/app/src/main/kotlin/cn/xihan/qdds/Option.kt b/app/src/main/kotlin/cn/xihan/qdds/Option.kt index 3e32bb6..a02e719 100644 --- a/app/src/main/kotlin/cn/xihan/qdds/Option.kt +++ b/app/src/main/kotlin/cn/xihan/qdds/Option.kt @@ -124,7 +124,7 @@ data class OptionEntity( /** * 屏蔽配置 * @param enableQuickShieldDialog 启用快速屏蔽弹窗 - * @param shieldOptionValueSet 屏蔽配置值集合 + * @param configurations 屏蔽配置值集合 * @param authorList 屏蔽作者集合 * @param bookTypeList 屏蔽书类集合 * @param bookNameList 屏蔽书名集合 @@ -137,7 +137,28 @@ data class OptionEntity( @SerialName("authorList") var authorList: MutableSet = mutableSetOf(), @SerialName("bookNameList") var bookNameList: MutableSet = mutableSetOf(), @SerialName("bookTypeList") var bookTypeList: Set = emptySet(), - @SerialName("shieldOptionValueSet") var shieldOptionValueSet: MutableSet = mutableSetOf(), + @SerialName("configurations") var configurations: MutableList = mutableListOf( + SelectedModel("搜索-发现(热词)"), + SelectedModel("搜索-热门作品榜"), + SelectedModel("搜索-人气标签榜"), + SelectedModel("搜索-为你推荐"), + SelectedModel("精选-主页面"), + SelectedModel("精选-分类"), + SelectedModel("精选-分类-全部作品"), + SelectedModel("精选-免费-免费推荐"), + SelectedModel("精选-免费-新书入库"), + SelectedModel("精选-畅销精选、主编力荐等更多"), + SelectedModel("精选-新书强推、三江推荐"), + SelectedModel("精选-排行榜"), + SelectedModel("精选-新书"), + SelectedModel("每日导读"), + SelectedModel("精选-漫画"), + SelectedModel("精选-漫画-其他"), + SelectedModel("阅读-最后一页-看过此书的人还看过"), + SelectedModel("阅读-最后一页-同类作品推荐"), + SelectedModel("阅读-最后一页-推荐"), + SelectedModel("分类-小编力荐、本周强推等更多") + ), @SerialName("enableBookTypeEnhancedBlocking") var enableBookTypeEnhancedBlocking: Boolean = false, ) diff --git a/app/src/main/kotlin/cn/xihan/qdds/Shield.kt b/app/src/main/kotlin/cn/xihan/qdds/Shield.kt index 73c7154..b22ef75 100644 --- a/app/src/main/kotlin/cn/xihan/qdds/Shield.kt +++ b/app/src/main/kotlin/cn/xihan/qdds/Shield.kt @@ -2,7 +2,6 @@ package cn.xihan.qdds import android.app.Activity import android.content.Context -import android.widget.RelativeLayout import android.widget.TextView import cn.xihan.qdds.HookEntry.Companion.isNeedShield import cn.xihan.qdds.HookEntry.Companion.parseNeedShieldList @@ -16,7 +15,6 @@ import com.highcapable.yukihookapi.hook.type.java.IntType import com.highcapable.yukihookapi.hook.type.java.JSONArrayClass import com.highcapable.yukihookapi.hook.type.java.ListClass import com.highcapable.yukihookapi.hook.type.java.UnitType -import de.robv.android.xposed.XposedHelpers /** * @项目名 : QDReadHook @@ -28,30 +26,38 @@ import de.robv.android.xposed.XposedHelpers /** * 屏蔽选项 * @param versionCode 版本号 - * @param optionValueSet 屏蔽选项值 + * @param configurations 屏蔽选项列表 */ -fun PackageParam.shieldOption(versionCode: Int, optionValueSet: Set) { - // 遍历 optionValueSet 包含的值 执行指定方法 - optionValueSet.forEach { - when (it) { - 0 -> shieldSearchFind(versionCode) - 3 -> shieldSearchRecommend(versionCode) - 4 -> shieldChoice(versionCode) - 5 -> shieldCategory(versionCode) - 6 -> shieldCategoryAllBook(versionCode) - 7 -> shieldFreeRecommend(versionCode) - 8 -> shieldFreeNewBook(versionCode) - 9 -> shieldHotAndRecommend(versionCode) - 10 -> shieldNewBookAndRecommend(versionCode) - 11 -> shieldBookRank(versionCode) - 12 -> shieldNewBook(versionCode) - 13 -> shieldDailyReading(versionCode) - 14 -> shieldComic(versionCode) - 15 -> shieldComicOther(versionCode) - 19 -> shieldCategoryBookListReborn(versionCode) +fun PackageParam.shieldOption( + versionCode: Int, + configurations: List +) { + if (configurations.isEmpty()) return + configurations.filter { it.selected }.takeIf { it.isNotEmpty() }?.forEach { selected -> + when (selected.title) { + "搜索-发现(热词)" -> shieldSearchFind(versionCode) + "搜索-为你推荐" -> shieldSearchRecommend(versionCode) + "精选-主页面" -> shieldChoice(versionCode) + "精选-分类" -> shieldCategory(versionCode) + "精选-分类-全部作品" -> shieldCategoryAllBook(versionCode) + "精选-免费-免费推荐" -> shieldFreeRecommend(versionCode) + "精选-免费-新书入库" -> shieldFreeNewBook(versionCode) + "精选-畅销精选、主编力荐等更多" -> shieldHotAndRecommend(versionCode) + "精选-新书强推、三江推荐" -> shieldNewBookAndRecommend(versionCode) + "精选-排行榜" -> shieldBookRank(versionCode) + "精选-新书" -> shieldNewBook(versionCode) + "每日导读" -> shieldDailyReading(versionCode) + "精选-漫画" -> shieldComic(versionCode) + "精选-漫画-其他" -> shieldComicOther(versionCode) + "分类-小编力荐、本周强推等更多" -> shieldCategoryBookListReborn(versionCode) } } - shieldSearch(versionCode, HookEntry.isEnableShieldOption(1), HookEntry.isEnableShieldOption(2)) + + shieldSearch( + versionCode = versionCode, + isNeedShieldBookRank = configurations.isSelectedByTitle("搜索-热门作品榜"), + isNeedShieldTagRank = configurations.isSelectedByTitle("搜索-人气标签榜") + ) } /** @@ -1200,7 +1206,7 @@ fun PackageParam.shieldComicOther(versionCode: Int) { } afterHook { val list = instance.getParamList?>() - if (list.isNotEmpty()){ + if (list.isNotEmpty()) { HookEntry.parseNeedShieldComicList(list) } }