fix: show donation progress percent

This commit is contained in:
tapframe 2026-07-06 02:29:12 +05:30
parent 0f7e9615e4
commit aeb5e04321
10 changed files with 41 additions and 18 deletions

View file

@ -1852,7 +1852,7 @@
<string name="addons_appstore_install_button">Добави</string>
<string name="community_donation_progress_title">Сървър и поддръжка за този месец</string>
<string name="community_donation_progress_complete">Покрито. Допълнителната подкрепа вече отива за разработка.</string>
<string name="community_donation_progress_remaining">След 100%% допълнителната подкрепа отива за разработка.</string>
<string name="community_donation_progress_remaining">След 100% допълнителната подкрепа отива за разработка.</string>
<string name="community_loading_donation_progress">Зареждане на напредъка на финансирането...</string>
<string name="compose_auth_terms_prefix">С регистрацията си се съгласявам с</string>
<string name="compose_auth_terms_link">Условията</string>

View file

@ -788,7 +788,7 @@
<string name="community_section_description">Podívejte se na lidi, kteří tvoří a podporují Nuvio na Mobilech, TV a Webu.</string>
<string name="community_donation_progress_title">Tento měsíc za servery a údržbu</string>
<string name="community_donation_progress_complete">Pokryto. Dodatečná podpora nyní půjde na vývoj.</string>
<string name="community_donation_progress_remaining">Po dosažení 100%% půjde další podpora na vývoj.</string>
<string name="community_donation_progress_remaining">Po dosažení 100% půjde další podpora na vývoj.</string>
<string name="community_loading_donation_progress">Načítání průběhu financování...</string>
<string name="community_supporters_not_configured">Supporters API není nakonfigurováno. Přidejte DONATIONS_BASE_URL do local.properties.</string>
<string name="community_tab_contributors">Přispěvatelé</string>

View file

@ -1331,7 +1331,7 @@
<string name="collections_trakt_rate_limit_reached">Trakt Αξιολόγηση limit reached</string>
<string name="collections_trakt_request_failed">Trakt request Απέτυχε</string>
<string name="community_donation_progress_complete">Covered. Προσθήκηitional support now goes to development.</string>
<string name="community_donation_progress_remaining">After 100%%, Προσθήκηitional support goes to development.</string>
<string name="community_donation_progress_remaining">After 100%, Προσθήκηitional support goes to development.</string>
<string name="community_donation_progress_title">Αυτό τον μήνα's server &amp; maintenance</string>
<string name="community_loading_donation_progress">Φόρτωση funding progress...</string>
<string name="compose_auth_terms_link">Terms</string>
@ -1911,4 +1911,4 @@
<string name="updates_github_api_error">GitHub releases API Σφάλμα: %1$d</string>
<string name="updates_no_channel_release">No upΗμερομηνία has been published yet.</string>
<string name="updates_release_missing_title">Release has Όχι tag or name</string>
</resources>
</resources>

View file

@ -788,7 +788,7 @@
<string name="community_section_description">Mira a las personas que construyen y apoyan Nuvio en Mobile, TV y Web.</string>
<string name="community_donation_progress_title">Servidor y mantenimiento de este mes</string>
<string name="community_donation_progress_complete">Cubierto. El apoyo adicional ahora se destina al desarrollo.</string>
<string name="community_donation_progress_remaining">Después del 100%%, el apoyo adicional se destina al desarrollo.</string>
<string name="community_donation_progress_remaining">Después del 100%, el apoyo adicional se destina al desarrollo.</string>
<string name="community_loading_donation_progress">Cargando progreso de financiación...</string>
<string name="community_supporters_not_configured">La API de patrocinadores no está configurada. Agrega DONATIONS_BASE_URL a local.properties.</string>
<string name="community_tab_contributors">Colaboradores</string>

View file

@ -780,7 +780,7 @@
<string name="community_section_description">Découvrez les personnes qui construisent et soutiennent Nuvio sur Mobile, TV et Web.</string>
<string name="community_donation_progress_title">Serveur et maintenance de ce mois-ci</string>
<string name="community_donation_progress_complete">Couvert. Le soutien supplémentaire va désormais au développement.</string>
<string name="community_donation_progress_remaining">Au-delà de 100%%, le soutien supplémentaire va au développement.</string>
<string name="community_donation_progress_remaining">Au-delà de 100%, le soutien supplémentaire va au développement.</string>
<string name="community_loading_donation_progress">Chargement de la progression du financement…</string>
<string name="community_supporters_not_configured">LAPI des supporters nest pas configurée. Ajoutez DONATIONS_BASE_URL dans local.properties.</string>
<string name="community_tab_contributors">Contributeurs</string>

View file

@ -1517,6 +1517,6 @@
<string name="compose_settings_root_advanced_description">Avvio e comportamento profili.</string>
<string name="supporters_contributors_donation_progress_title">Costi di manutenzione e server</string>
<string name="supporters_contributors_donation_progress_complete">Coperto. Qualsiasi supporto ulteriore andrà allo sviluppo.</string>
<string name="supporters_contributors_donation_progress_remaining">Dopo il 100%%, eventuale supporto in più andrà allo sviluppo.</string>
<string name="supporters_contributors_donation_progress_remaining">Dopo il 100%, eventuale supporto in più andrà allo sviluppo.</string>
<string name="supporters_contributors_donate_button">Dona a Nuvio</string>
</resources>

View file

@ -788,7 +788,7 @@
<string name="community_section_description">Mobile・TV・Webを通じてNuvioを構築・支援している人々をご覧ください。</string>
<string name="community_donation_progress_title">今月のサーバー・メンテナンス費用</string>
<string name="community_donation_progress_complete">達成済み。追加のサポートは開発費に充てられます。</string>
<string name="community_donation_progress_remaining">100%%を超えた追加サポートは開発費に充てられます。</string>
<string name="community_donation_progress_remaining">100%を超えた追加サポートは開発費に充てられます。</string>
<string name="community_loading_donation_progress">資金調達状況を読み込み中...</string>
<string name="community_supporters_not_configured">サポーターAPIが設定されていません。local.propertiesにDONATIONS_BASE_URLを追加してください。</string>
<string name="community_tab_contributors">コントリビューター</string>

View file

@ -778,7 +778,7 @@
<string name="community_section_description">Pozrite sa na ľudí, ktorí budujú a podporujú Nuvio na Mobile, TV a Webe.</string>
<string name="community_donation_progress_title">Server a údržba tohto mesiaca</string>
<string name="community_donation_progress_complete">Pokryté. Ďalšia podpora ide na vývoj.</string>
<string name="community_donation_progress_remaining">Po 100 %% ide ďalšia podpora na vývoj.</string>
<string name="community_donation_progress_remaining">Po 100 % ide ďalšia podpora na vývoj.</string>
<string name="community_loading_donation_progress">Načítavanie postupu financovania...</string>
<string name="community_supporters_not_configured">API podporovateľov nie je nakonfigurované. Pridajte DONATIONS_BASE_URL do local.properties.</string>
<string name="community_tab_contributors">Prispievatelia</string>

View file

@ -814,7 +814,7 @@
<string name="community_section_description">See the people building and supporting Nuvio across Mobile, TV, and Web.</string>
<string name="community_donation_progress_title">This month&apos;s server &amp; maintenance</string>
<string name="community_donation_progress_complete">Covered. Additional support now goes to development.</string>
<string name="community_donation_progress_remaining">After 100%%, additional support goes to development.</string>
<string name="community_donation_progress_remaining">After 100%, additional support goes to development.</string>
<string name="community_loading_donation_progress">Loading funding progress...</string>
<string name="community_supporters_not_configured">Supporters API is not configured. Add DONATIONS_BASE_URL to local.properties.</string>
<string name="community_tab_contributors">Contributors</string>

View file

@ -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(