From 6dfb9ecb71cefdef57bf384a14b1111676ede4e6 Mon Sep 17 00:00:00 2001 From: Liuxinyu176 <1041316040@qq.com> Date: Fri, 9 Oct 2026 22:42:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(trae):=20=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E4=B8=BB=E4=BD=99=E9=A2=9D=E6=94=B9=E4=B8=BA=20Free=20plan=20?= =?UTF-8?q?=E6=9C=88=E9=85=8D=E9=A2=9D=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 详情页顶部「当前余额」在 INTL 美元计费时显示套餐名 + 月配额明细,不再显示 0 Credits - 设备已实测:Free plan / 10次/月 / 50次/月 / 1000次/月 / 5000次/月 --- app/build.gradle.kts | 4 +- .../ui/servicedetail/ServiceDetailScreen.kt | 68 +++++++++++++++---- app/src/main/res/values-b+zh+Hans/strings.xml | 1 + app/src/main/res/values-b+zh+Hant/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 59 insertions(+), 16 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5281277..fdba975 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.rainy.token" minSdk = 31 targetSdk = 35 - versionCode = 38 - versionName = "1.7.18" + versionCode = 39 + versionName = "1.7.19" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt b/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt index 72e490b..77dc0a6 100644 --- a/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt +++ b/app/src/main/java/com/rainy/token/ui/servicedetail/ServiceDetailScreen.kt @@ -1094,6 +1094,42 @@ private fun MainBalanceCard(state: State, service: ServiceType) { } } +@Composable +private fun TraeIntlBigNumber(extras: Map) { + val planName = extras["intl.plan_name"] ?: "Free plan" + Text( + text = planName, + style = MaterialTheme.typography.displayLarge, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.onSurface + ) + Spacer(modifier = Modifier.width(6.dp)) + Text( + text = stringResource(R.string.trae_intl_monthly_quota), + style = MaterialTheme.typography.titleLarge, + color = inkMuted(), + modifier = Modifier.padding(bottom = 8.dp) + ) + Spacer(modifier = Modifier.height(6.dp)) + val quotaUnit = stringResource(R.string.trae_intl_quota_unit) + InfoRow( + label = stringResource(R.string.trae_intl_premium_fast_title), + value = (extras["intl.premium_fast_limit"] ?: "—") + " $quotaUnit" + ) + InfoRow( + label = stringResource(R.string.trae_intl_premium_slow_title), + value = (extras["intl.premium_slow_limit"] ?: "—") + " $quotaUnit" + ) + InfoRow( + label = stringResource(R.string.trae_intl_advanced_title), + value = (extras["intl.advanced_limit"] ?: "—") + " $quotaUnit" + ) + InfoRow( + label = stringResource(R.string.trae_intl_auto_completion_title), + value = (extras["intl.auto_completion_limit"] ?: "—") + " $quotaUnit" + ) +} + @Composable private fun BalanceBigNumber(balance: ServiceBalance?, service: ServiceType) { if (balance == null) { @@ -1104,20 +1140,24 @@ private fun BalanceBigNumber(balance: ServiceBalance?, service: ServiceType) { ) return } - Row(verticalAlignment = Alignment.Bottom) { - Text( - text = formatAmount(balance.amount), - style = MaterialTheme.typography.displayLarge, - fontWeight = FontWeight.Bold, - color = MaterialTheme.colorScheme.onSurface - ) - Spacer(modifier = Modifier.width(6.dp)) - Text( - text = balance.unit, - style = MaterialTheme.typography.titleLarge, - color = inkMuted(), - modifier = Modifier.padding(bottom = 8.dp) - ) + if (service == ServiceType.TRAE && balance.extras?.get("billing_mode") == "dollar") { + TraeIntlBigNumber(balance.extras) + } else { + Row(verticalAlignment = Alignment.Bottom) { + Text( + text = formatAmount(balance.amount), + style = MaterialTheme.typography.displayLarge, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.onSurface + ) + Spacer(modifier = Modifier.width(6.dp)) + Text( + text = balance.unit, + style = MaterialTheme.typography.titleLarge, + color = inkMuted(), + modifier = Modifier.padding(bottom = 8.dp) + ) + } } if (!balance.isAvailable) { Spacer(modifier = Modifier.height(4.dp)) diff --git a/app/src/main/res/values-b+zh+Hans/strings.xml b/app/src/main/res/values-b+zh+Hans/strings.xml index abe73b2..d02a85e 100644 --- a/app/src/main/res/values-b+zh+Hans/strings.xml +++ b/app/src/main/res/values-b+zh+Hans/strings.xml @@ -802,4 +802,5 @@ 基础用量已用 国际版没有每日签到 Trae 国际版按美元计费,使用月度请求额度,没有签到积分体系。 + 月配额 \ No newline at end of file diff --git a/app/src/main/res/values-b+zh+Hant/strings.xml b/app/src/main/res/values-b+zh+Hant/strings.xml index af27a3d..21327ef 100644 --- a/app/src/main/res/values-b+zh+Hant/strings.xml +++ b/app/src/main/res/values-b+zh+Hant/strings.xml @@ -802,4 +802,5 @@ 基礎用量已用 國際版沒有每日簽到 Trae 國際版按美元計費,使用月度請求額度,沒有簽到積分體系。 + 月額度 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ebfed2..e1e3938 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -807,4 +807,5 @@ Basic usage used International edition has no daily check-in TRAE International uses USD billing with monthly request quotas instead of credit check-ins. + Monthly quota \ No newline at end of file