feat(trae): INTL 显示美元用量额度 $0.00 / $1.00
- 详情页主余额与首页卡片新增「美元用量额度」行(basic_usage_limit/used) - 账户信息卡同步展示已用/总额美元额度 - 设备已实测:Free plan / $0.00 / $1.00 + 月请求配额
This commit is contained in:
parent
94bb4de0b4
commit
5a12f10d4e
@ -16,8 +16,8 @@ android {
|
|||||||
applicationId = "com.rainy.token"
|
applicationId = "com.rainy.token"
|
||||||
minSdk = 31
|
minSdk = 31
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 39
|
versionCode = 40
|
||||||
versionName = "1.7.19"
|
versionName = "1.7.20"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables {
|
vectorDrawables {
|
||||||
|
|||||||
@ -174,9 +174,11 @@ class TraeRepository constructor(
|
|||||||
q.getNumber("advanced_model_request_limit")?.let { extras["intl.advanced_limit"] = trimNum(it) }
|
q.getNumber("advanced_model_request_limit")?.let { extras["intl.advanced_limit"] = trimNum(it) }
|
||||||
q.getNumber("auto_completion_limit")?.let { extras["intl.auto_completion_limit"] = trimNum(it) }
|
q.getNumber("auto_completion_limit")?.let { extras["intl.auto_completion_limit"] = trimNum(it) }
|
||||||
q.getNumber("basic_usage_limit")?.let { extras["intl.basic_usage_limit"] = trimNum(it) }
|
q.getNumber("basic_usage_limit")?.let { extras["intl.basic_usage_limit"] = trimNum(it) }
|
||||||
|
q.getNumber("basic_usage_limit")?.let { extras["intl.dollar_limit"] = it.toString() }
|
||||||
q.getNumber("bonus_usage_limit")?.let { extras["intl.bonus_usage_limit"] = trimNum(it) }
|
q.getNumber("bonus_usage_limit")?.let { extras["intl.bonus_usage_limit"] = trimNum(it) }
|
||||||
}
|
}
|
||||||
pack.getNumber("usage", "basic_usage_amount")?.let { extras["intl.basic_used"] = trimNum(it) }
|
pack.getNumber("usage", "basic_usage_amount")?.let { extras["intl.basic_used"] = trimNum(it) }
|
||||||
|
pack.getNumber("usage", "basic_usage_amount")?.let { extras["intl.dollar_used"] = it.toString() }
|
||||||
pack.getNumber("usage", "bonus_usage_amount")?.let { extras["intl.bonus_used"] = trimNum(it) }
|
pack.getNumber("usage", "bonus_usage_amount")?.let { extras["intl.bonus_used"] = trimNum(it) }
|
||||||
pack.getNumber("usage", "credits_amount")?.let { extras["intl.credits_used"] = trimNum(it) }
|
pack.getNumber("usage", "credits_amount")?.let { extras["intl.credits_used"] = trimNum(it) }
|
||||||
return@forEachIndexed
|
return@forEachIndexed
|
||||||
|
|||||||
@ -218,6 +218,27 @@ private fun TraeDollarPlanSummary(extras: Map<String, String>) {
|
|||||||
color = inkMuted()
|
color = inkMuted()
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
|
val dollarUsed = extras["intl.dollar_used"]?.toDoubleOrNull()
|
||||||
|
val dollarLimit = extras["intl.dollar_limit"]?.toDoubleOrNull()
|
||||||
|
if (dollarLimit != null) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
verticalAlignment = Alignment.Bottom,
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
text = stringResource(R.string.trae_intl_dollar_usage_title),
|
||||||
|
style = MaterialTheme.typography.titleMedium,
|
||||||
|
color = inkMuted()
|
||||||
|
)
|
||||||
|
Text(
|
||||||
|
text = String.format(Locale.US, "\$%.2f / \$%.2f", dollarUsed ?: 0.0, dollarLimit),
|
||||||
|
style = MaterialTheme.typography.headlineSmall,
|
||||||
|
fontWeight = FontWeight.Bold,
|
||||||
|
color = MaterialTheme.colorScheme.onSurface
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
TraeSplitLine(stringResource(R.string.trae_intl_premium_fast_title), extras["intl.premium_fast_limit"]?.toDoubleOrNull(), stringResource(R.string.trae_intl_quota_unit))
|
TraeSplitLine(stringResource(R.string.trae_intl_premium_fast_title), extras["intl.premium_fast_limit"]?.toDoubleOrNull(), stringResource(R.string.trae_intl_quota_unit))
|
||||||
TraeSplitLine(stringResource(R.string.trae_intl_premium_slow_title), extras["intl.premium_slow_limit"]?.toDoubleOrNull(), stringResource(R.string.trae_intl_quota_unit))
|
TraeSplitLine(stringResource(R.string.trae_intl_premium_slow_title), extras["intl.premium_slow_limit"]?.toDoubleOrNull(), stringResource(R.string.trae_intl_quota_unit))
|
||||||
TraeSplitLine(stringResource(R.string.trae_intl_advanced_title), extras["intl.advanced_limit"]?.toDoubleOrNull(), stringResource(R.string.trae_intl_quota_unit))
|
TraeSplitLine(stringResource(R.string.trae_intl_advanced_title), extras["intl.advanced_limit"]?.toDoubleOrNull(), stringResource(R.string.trae_intl_quota_unit))
|
||||||
|
|||||||
@ -1111,6 +1111,14 @@ private fun TraeIntlBigNumber(extras: Map<String, String>) {
|
|||||||
modifier = Modifier.padding(bottom = 8.dp)
|
modifier = Modifier.padding(bottom = 8.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(6.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
|
val dollarUsed = extras["intl.dollar_used"]?.toDoubleOrNull()
|
||||||
|
val dollarLimit = extras["intl.dollar_limit"]?.toDoubleOrNull()
|
||||||
|
if (dollarLimit != null) {
|
||||||
|
InfoRow(
|
||||||
|
label = stringResource(R.string.trae_intl_dollar_usage_title),
|
||||||
|
value = String.format(Locale.US, "\$%.2f / \$%.2f", dollarUsed ?: 0.0, dollarLimit)
|
||||||
|
)
|
||||||
|
}
|
||||||
val quotaUnit = stringResource(R.string.trae_intl_quota_unit)
|
val quotaUnit = stringResource(R.string.trae_intl_quota_unit)
|
||||||
InfoRow(
|
InfoRow(
|
||||||
label = stringResource(R.string.trae_intl_premium_fast_title),
|
label = stringResource(R.string.trae_intl_premium_fast_title),
|
||||||
@ -1548,6 +1556,17 @@ internal fun TraeAccountInfoCard(state: State) {
|
|||||||
add(stringResource(R.string.extra_label_pack_count) to it.toString())
|
add(stringResource(R.string.extra_label_pack_count) to it.toString())
|
||||||
}
|
}
|
||||||
if (extras["billing_mode"] == "dollar") {
|
if (extras["billing_mode"] == "dollar") {
|
||||||
|
extras["intl.dollar_limit"]?.toDoubleOrNull()?.let { limit ->
|
||||||
|
add(
|
||||||
|
stringResource(R.string.trae_intl_dollar_usage_title) to
|
||||||
|
String.format(
|
||||||
|
Locale.US,
|
||||||
|
"$%.2f / $%.2f",
|
||||||
|
extras["intl.dollar_used"]?.toDoubleOrNull() ?: 0.0,
|
||||||
|
limit
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
extras["intl.plan_name"]?.let {
|
extras["intl.plan_name"]?.let {
|
||||||
add(stringResource(R.string.trae_intl_plan_title) to it)
|
add(stringResource(R.string.trae_intl_plan_title) to it)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -803,4 +803,5 @@
|
|||||||
<string name="trae_intl_no_checkin_title">国际版没有每日签到</string>
|
<string name="trae_intl_no_checkin_title">国际版没有每日签到</string>
|
||||||
<string name="trae_intl_no_checkin_desc">Trae 国际版按美元计费,使用月度请求额度,没有签到积分体系。</string>
|
<string name="trae_intl_no_checkin_desc">Trae 国际版按美元计费,使用月度请求额度,没有签到积分体系。</string>
|
||||||
<string name="trae_intl_monthly_quota">月配额</string>
|
<string name="trae_intl_monthly_quota">月配额</string>
|
||||||
|
<string name="trae_intl_dollar_usage_title">美元用量额度</string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -803,4 +803,5 @@
|
|||||||
<string name="trae_intl_no_checkin_title">國際版沒有每日簽到</string>
|
<string name="trae_intl_no_checkin_title">國際版沒有每日簽到</string>
|
||||||
<string name="trae_intl_no_checkin_desc">Trae 國際版按美元計費,使用月度請求額度,沒有簽到積分體系。</string>
|
<string name="trae_intl_no_checkin_desc">Trae 國際版按美元計費,使用月度請求額度,沒有簽到積分體系。</string>
|
||||||
<string name="trae_intl_monthly_quota">月額度</string>
|
<string name="trae_intl_monthly_quota">月額度</string>
|
||||||
|
<string name="trae_intl_dollar_usage_title">美元用量額度</string>
|
||||||
</resources>
|
</resources>
|
||||||
@ -808,4 +808,5 @@
|
|||||||
<string name="trae_intl_no_checkin_title">International edition has no daily check-in</string>
|
<string name="trae_intl_no_checkin_title">International edition has no daily check-in</string>
|
||||||
<string name="trae_intl_no_checkin_desc">TRAE International uses USD billing with monthly request quotas instead of credit check-ins.</string>
|
<string name="trae_intl_no_checkin_desc">TRAE International uses USD billing with monthly request quotas instead of credit check-ins.</string>
|
||||||
<string name="trae_intl_monthly_quota">Monthly quota</string>
|
<string name="trae_intl_monthly_quota">Monthly quota</string>
|
||||||
|
<string name="trae_intl_dollar_usage_title">Dollar allowance</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in New Issue
Block a user