From aeb5e04321c407d25925f461b0b10453a837836e Mon Sep 17 00:00:00 2001
From: tapframe <85391825+tapframe@users.noreply.github.com>
Date: Mon, 6 Jul 2026 02:29:12 +0530
Subject: [PATCH] fix: show donation progress percent
---
.../composeResources/values-bg/strings.xml | 2 +-
.../composeResources/values-cs/strings.xml | 2 +-
.../composeResources/values-el/strings.xml | 4 +-
.../composeResources/values-es/strings.xml | 2 +-
.../composeResources/values-fr/strings.xml | 2 +-
.../composeResources/values-it/strings.xml | 2 +-
.../composeResources/values-ja/strings.xml | 2 +-
.../composeResources/values-sk/strings.xml | 2 +-
.../composeResources/values/strings.xml | 2 +-
.../settings/SupportersContributorsPage.kt | 39 +++++++++++++++----
10 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/composeApp/src/commonMain/composeResources/values-bg/strings.xml b/composeApp/src/commonMain/composeResources/values-bg/strings.xml
index 42806f065..d02723c2f 100644
--- a/composeApp/src/commonMain/composeResources/values-bg/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-bg/strings.xml
@@ -1852,7 +1852,7 @@
Добави
Сървър и поддръжка за този месец
Покрито. Допълнителната подкрепа вече отива за разработка.
- След 100%% допълнителната подкрепа отива за разработка.
+ След 100% допълнителната подкрепа отива за разработка.
Зареждане на напредъка на финансирането...
С регистрацията си се съгласявам с
Условията
diff --git a/composeApp/src/commonMain/composeResources/values-cs/strings.xml b/composeApp/src/commonMain/composeResources/values-cs/strings.xml
index a8eef7a6a..405334190 100644
--- a/composeApp/src/commonMain/composeResources/values-cs/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-cs/strings.xml
@@ -788,7 +788,7 @@
Podívejte se na lidi, kteří tvoří a podporují Nuvio na Mobilech, TV a Webu.
Tento měsíc za servery a údržbu
Pokryto. Dodatečná podpora nyní půjde na vývoj.
- Po dosažení 100%% půjde další podpora na vývoj.
+ Po dosažení 100% půjde další podpora na vývoj.
Načítání průběhu financování...
Supporters API není nakonfigurováno. Přidejte DONATIONS_BASE_URL do local.properties.
Přispěvatelé
diff --git a/composeApp/src/commonMain/composeResources/values-el/strings.xml b/composeApp/src/commonMain/composeResources/values-el/strings.xml
index 222e848c2..4c2fd1766 100644
--- a/composeApp/src/commonMain/composeResources/values-el/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-el/strings.xml
@@ -1331,7 +1331,7 @@
Trakt Αξιολόγηση limit reached
Trakt request Απέτυχε
Covered. Προσθήκηitional support now goes to development.
- After 100%%, Προσθήκηitional support goes to development.
+ After 100%, Προσθήκηitional support goes to development.
Αυτό τον μήνα's server & maintenance
Φόρτωση funding progress...
Terms
@@ -1911,4 +1911,4 @@
GitHub releases API Σφάλμα: %1$d
No upΗμερομηνία has been published yet.
Release has Όχι tag or name
-
\ No newline at end of file
+
diff --git a/composeApp/src/commonMain/composeResources/values-es/strings.xml b/composeApp/src/commonMain/composeResources/values-es/strings.xml
index c965ad6f7..e591930a4 100644
--- a/composeApp/src/commonMain/composeResources/values-es/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-es/strings.xml
@@ -788,7 +788,7 @@
Mira a las personas que construyen y apoyan Nuvio en Mobile, TV y Web.
Servidor y mantenimiento de este mes
Cubierto. El apoyo adicional ahora se destina al desarrollo.
- Después del 100%%, el apoyo adicional se destina al desarrollo.
+ Después del 100%, el apoyo adicional se destina al desarrollo.
Cargando progreso de financiación...
La API de patrocinadores no está configurada. Agrega DONATIONS_BASE_URL a local.properties.
Colaboradores
diff --git a/composeApp/src/commonMain/composeResources/values-fr/strings.xml b/composeApp/src/commonMain/composeResources/values-fr/strings.xml
index 772401ab9..237419643 100644
--- a/composeApp/src/commonMain/composeResources/values-fr/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-fr/strings.xml
@@ -780,7 +780,7 @@
Découvrez les personnes qui construisent et soutiennent Nuvio sur Mobile, TV et Web.
Serveur et maintenance de ce mois-ci
Couvert. Le soutien supplémentaire va désormais au développement.
- Au-delà de 100 %%, le soutien supplémentaire va au développement.
+ Au-delà de 100 %, le soutien supplémentaire va au développement.
Chargement de la progression du financement…
L’API des supporters n’est pas configurée. Ajoutez DONATIONS_BASE_URL dans local.properties.
Contributeurs
diff --git a/composeApp/src/commonMain/composeResources/values-it/strings.xml b/composeApp/src/commonMain/composeResources/values-it/strings.xml
index bbce04579..035580c22 100644
--- a/composeApp/src/commonMain/composeResources/values-it/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-it/strings.xml
@@ -1517,6 +1517,6 @@
Avvio e comportamento profili.
Costi di manutenzione e server
Coperto. Qualsiasi supporto ulteriore andrà allo sviluppo.
- Dopo il 100%%, eventuale supporto in più andrà allo sviluppo.
+ Dopo il 100%, eventuale supporto in più andrà allo sviluppo.
Dona a Nuvio
diff --git a/composeApp/src/commonMain/composeResources/values-ja/strings.xml b/composeApp/src/commonMain/composeResources/values-ja/strings.xml
index e0af8d042..45688cd97 100644
--- a/composeApp/src/commonMain/composeResources/values-ja/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-ja/strings.xml
@@ -788,7 +788,7 @@
Mobile・TV・Webを通じてNuvioを構築・支援している人々をご覧ください。
今月のサーバー・メンテナンス費用
達成済み。追加のサポートは開発費に充てられます。
- 100%%を超えた追加サポートは開発費に充てられます。
+ 100%を超えた追加サポートは開発費に充てられます。
資金調達状況を読み込み中...
サポーターAPIが設定されていません。local.propertiesにDONATIONS_BASE_URLを追加してください。
コントリビューター
diff --git a/composeApp/src/commonMain/composeResources/values-sk/strings.xml b/composeApp/src/commonMain/composeResources/values-sk/strings.xml
index a72a6e3ef..f554f5310 100644
--- a/composeApp/src/commonMain/composeResources/values-sk/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values-sk/strings.xml
@@ -778,7 +778,7 @@
Pozrite sa na ľudí, ktorí budujú a podporujú Nuvio na Mobile, TV a Webe.
Server a údržba tohto mesiaca
Pokryté. Ďalšia podpora ide na vývoj.
- Po 100 %% ide ďalšia podpora na vývoj.
+ Po 100 % ide ďalšia podpora na vývoj.
Načítavanie postupu financovania...
API podporovateľov nie je nakonfigurované. Pridajte DONATIONS_BASE_URL do local.properties.
Prispievatelia
diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml
index de0260e8e..a05e2bf91 100644
--- a/composeApp/src/commonMain/composeResources/values/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values/strings.xml
@@ -814,7 +814,7 @@
See the people building and supporting Nuvio across Mobile, TV, and Web.
This month's server & maintenance
Covered. Additional support now goes to development.
- After 100%%, additional support goes to development.
+ After 100%, additional support goes to development.
Loading funding progress...
Supporters API is not configured. Add DONATIONS_BASE_URL to local.properties.
Contributors
diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SupportersContributorsPage.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SupportersContributorsPage.kt
index 2299e120a..6ff9426a0 100644
--- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SupportersContributorsPage.kt
+++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/SupportersContributorsPage.kt
@@ -59,6 +59,7 @@ import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
+import kotlin.math.roundToInt
import nuvio.composeapp.generated.resources.*
import org.jetbrains.compose.resources.getString
import org.jetbrains.compose.resources.stringResource
@@ -208,8 +209,7 @@ private object SupportersContributorsRepository {
val progress = donationsResponse.monthlyGoal
?.progressPercent
- ?.toInt()
- ?.coerceIn(0, 100)
+ ?.toDonationProgressPercent()
?.let { percent -> DonationProgress(progressPercent = percent) }
SupportersResult(
@@ -240,6 +240,15 @@ private object SupportersContributorsRepository {
val day = parts[2].toLongOrNull() ?: return Long.MIN_VALUE
return year * 10_000L + month * 100L + day
}
+
+ private fun Double.toDonationProgressPercent(): Int? {
+ if (isNaN()) return null
+ return when {
+ this >= 100.0 -> 100
+ this <= 0.0 -> 0
+ else -> roundToInt().coerceIn(0, 99)
+ }
+ }
}
@Composable
@@ -630,13 +639,27 @@ private fun DonationProgressSection(
modifier = Modifier.fillMaxWidth(),
verticalArrangement = Arrangement.spacedBy(10.dp),
) {
- Text(
- text = stringResource(Res.string.community_donation_progress_title),
- style = MaterialTheme.typography.titleSmall,
- color = MaterialTheme.colorScheme.onSurface,
- fontWeight = FontWeight.SemiBold,
+ Row(
modifier = Modifier.fillMaxWidth(),
- )
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.spacedBy(12.dp),
+ ) {
+ Text(
+ text = stringResource(Res.string.community_donation_progress_title),
+ style = MaterialTheme.typography.titleSmall,
+ color = MaterialTheme.colorScheme.onSurface,
+ fontWeight = FontWeight.SemiBold,
+ modifier = Modifier.weight(1f),
+ )
+ if (progress != null && errorMessage == null) {
+ Text(
+ text = "$percent%",
+ style = MaterialTheme.typography.titleSmall,
+ color = MaterialTheme.colorScheme.primary,
+ fontWeight = FontWeight.SemiBold,
+ )
+ }
+ }
if (isLoading && progress == null) {
LinearProgressIndicator(