From 31ce4eac928fa39e0c3f04fd95cb8611a742a86f Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Mon, 9 Sep 2024 22:06:12 +0800 Subject: [PATCH] Update description for IP-based image limit --- .../hippo/ehviewer/ui/settings/EhScreen.kt | 20 +++++++++----- app/src/main/res/values-zh-rCN/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/rust/src/parser/home.rs | 27 ++++++++++++------- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt index a633c3dc8..874c2cdea 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/EhScreen.kt @@ -160,7 +160,11 @@ fun EhScreen(navigator: DestinationsNavigator) { var error by rememberSaveable { mutableStateOf(null) } val summary by rememberUpdatedState( result?.run { - stringResource(id = R.string.image_limits_summary, limits.current, limits.maximum) + when (limits.maximum) { + -1 -> stringResource(id = R.string.image_limits_restricted) + 0 -> stringResource(id = R.string.image_limits_normal) + else -> stringResource(id = R.string.image_limits_summary, limits.current, limits.maximum) + } } ?: placeholder, ) suspend fun getImageLimits() { @@ -190,12 +194,16 @@ fun EhScreen(navigator: DestinationsNavigator) { Text(text = it) } ?: result?.let { (limits, funds) -> Column(verticalArrangement = Arrangement.spacedBy(8.dp)) { - LinearProgressIndicator( - progress = { limits.current.toFloat() / limits.maximum }, - modifier = Modifier.height(12.dp).fillMaxWidth(), - ) + if (limits.maximum > 0) { + LinearProgressIndicator( + progress = { limits.current.toFloat() / limits.maximum }, + modifier = Modifier.height(12.dp).fillMaxWidth(), + ) + } Text(text = summary) - Text(text = stringResource(id = R.string.reset_cost, limits.resetCost)) + if (limits.resetCost > 0) { + Text(text = stringResource(id = R.string.reset_cost, limits.resetCost)) + } Text(text = stringResource(id = R.string.current_funds)) Row( modifier = Modifier.fillMaxWidth(), diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 822eb5d6a..7e5a100b7 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -423,6 +423,8 @@ 余额不足 图片配额 已用:%1$d / %2$d + 无限制 + 图片分辨率限制为 1280x 重置花费:%d GP 成功重置图片配额 重置 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 67a288038..2c1986a69 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -444,6 +444,8 @@ Insufficient Funds Image Limits Used: %1$d / %2$d + No restrictions + Image resolution restricted to 1280x Reset Cost: %d GP Image limit was successfully reset Reset diff --git a/app/src/main/rust/src/parser/home.rs b/app/src/main/rust/src/parser/home.rs index 4b0605f7b..c44eba865 100644 --- a/app/src/main/rust/src/parser/home.rs +++ b/app/src/main/rust/src/parser/home.rs @@ -17,10 +17,9 @@ struct Limits { } fn parse_limit(dom: &VDom, parser: &Parser) -> Option { - let iter = get_vdom_first_element_by_class_name(dom, "homebox")? - .as_tag()? - .query_selector(parser, "strong")?; - let vec: Vec = iter + let limit_box = get_vdom_first_element_by_class_name(dom, "homebox")?.as_tag()?; + let vec = limit_box + .query_selector(parser, "strong")? .filter_map(|e| { e.get(parser)? .inner_text(parser) @@ -28,15 +27,23 @@ fn parse_limit(dom: &VDom, parser: &Parser) -> Option { .parse::() .ok() }) - .collect(); - if vec.len() == 3 { - Some(Limits { + .collect::>(); + match vec.len() { + 3 => Some(Limits { current: vec[0], maximum: vec[1], resetCost: vec[2], - }) - } else { - None + }), + 1 => Some(Limits { + current: 0, + maximum: if limit_box.inner_text(parser).contains("No restrictions") { + 0 + } else { + -1 + }, + resetCost: 0, + }), + _ => None, } }