.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package com.bitcointxoko.gudariwallet.i18n
|
package com.bitcointxoko.gudariwallet.i18n
|
||||||
|
|
||||||
import cafe.adriel.lyricist.LyricistStrings
|
import cafe.adriel.lyricist.LyricistStrings
|
||||||
|
import kotlin.String
|
||||||
|
|
||||||
@LyricistStrings(languageTag = "en", default = true)
|
@LyricistStrings(languageTag = "en", default = true)
|
||||||
val EnHomeStrings = AppStrings(
|
val EnHomeStrings = AppStrings(
|
||||||
@@ -31,9 +32,9 @@ val EnHomeStrings = AppStrings(
|
|||||||
showFiat = "+ Show fiat",
|
showFiat = "+ Show fiat",
|
||||||
updatedAt = { label -> "Updated $label" },
|
updatedAt = { label -> "Updated $label" },
|
||||||
justNow = "just now",
|
justNow = "just now",
|
||||||
minAgo = {min -> "$min ago"},
|
minAgo = {min -> "$min min ago"},
|
||||||
atTime = {time -> "at $time"},
|
atTime = {time -> "at $time"},
|
||||||
viewHistory = "View History",
|
viewHistory = "Activity",
|
||||||
selectCurrency = "Select currency",
|
selectCurrency = "Select currency",
|
||||||
currencyNone = "None",
|
currencyNone = "None",
|
||||||
hideFiatEquivalent = "Hide fiat equivalent",
|
hideFiatEquivalent = "Hide fiat equivalent",
|
||||||
@@ -196,7 +197,7 @@ val EnHomeStrings = AppStrings(
|
|||||||
sendVmPaymentFailedRescan = "Payment failed — could not re-fetch address",
|
sendVmPaymentFailedRescan = "Payment failed — could not re-fetch address",
|
||||||
|
|
||||||
// ── HistoryScreen ─────────────────────────────────────────────────────────
|
// ── HistoryScreen ─────────────────────────────────────────────────────────
|
||||||
historyTitle = "History",
|
historyTitle = "Activity",
|
||||||
historyClose = "Close",
|
historyClose = "Close",
|
||||||
historySearchPayments = "Search payments",
|
historySearchPayments = "Search payments",
|
||||||
historyFilterPayments = "Filter payments",
|
historyFilterPayments = "Filter payments",
|
||||||
@@ -272,6 +273,10 @@ val EnHomeStrings = AppStrings(
|
|||||||
"partial matches work too.",
|
"partial matches work too.",
|
||||||
|
|
||||||
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
||||||
|
statusSuccess = "Success", // e.g. "Success"
|
||||||
|
statusPending = "Pending", // e.g. "Pending"
|
||||||
|
statusFailed = "Failed", // e.g. "Failed"
|
||||||
|
statusUnknown = "Unknown", // e.g. "Unknown"
|
||||||
detailOutgoingTitle = "Outgoing payment",
|
detailOutgoingTitle = "Outgoing payment",
|
||||||
detailIncomingTitle = "Incoming payment",
|
detailIncomingTitle = "Incoming payment",
|
||||||
detailBack = "Back",
|
detailBack = "Back",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ val EsHomeStrings = AppStrings(
|
|||||||
justNow = "justo ahora",
|
justNow = "justo ahora",
|
||||||
minAgo = {min -> "hace $min min"},
|
minAgo = {min -> "hace $min min"},
|
||||||
atTime = {time -> "a las $time"},
|
atTime = {time -> "a las $time"},
|
||||||
viewHistory = "Ver historial",
|
viewHistory = "Historial",
|
||||||
selectCurrency = "Seleccionar moneda",
|
selectCurrency = "Seleccionar moneda",
|
||||||
currencyNone = "Ninguna",
|
currencyNone = "Ninguna",
|
||||||
hideFiatEquivalent = "Ocultar equivalente fiat",
|
hideFiatEquivalent = "Ocultar equivalente fiat",
|
||||||
@@ -272,6 +272,10 @@ val EsHomeStrings = AppStrings(
|
|||||||
"las coincidencias parciales también funcionan.",
|
"las coincidencias parciales también funcionan.",
|
||||||
|
|
||||||
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
||||||
|
statusSuccess = "Completado",
|
||||||
|
statusPending = "Pendiente",
|
||||||
|
statusFailed = "Fallido",
|
||||||
|
statusUnknown = "Desconocido",
|
||||||
detailOutgoingTitle = "Pago saliente",
|
detailOutgoingTitle = "Pago saliente",
|
||||||
detailIncomingTitle = "Pago entrante",
|
detailIncomingTitle = "Pago entrante",
|
||||||
detailBack = "Atrás",
|
detailBack = "Atrás",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ val EuStrings = AppStrings(
|
|||||||
justNow = "orain bertan",
|
justNow = "orain bertan",
|
||||||
minAgo = { min -> "duela $min minutu" },
|
minAgo = { min -> "duela $min minutu" },
|
||||||
atTime = { time -> "$time-etan" },
|
atTime = { time -> "$time-etan" },
|
||||||
viewHistory = "Ikusi historia",
|
viewHistory = "Historia",
|
||||||
selectCurrency = "Hautatu moneta",
|
selectCurrency = "Hautatu moneta",
|
||||||
currencyNone = "Bat ere ez",
|
currencyNone = "Bat ere ez",
|
||||||
hideFiatEquivalent = "Ezkutatu fiat baliokidea",
|
hideFiatEquivalent = "Ezkutatu fiat baliokidea",
|
||||||
@@ -272,6 +272,10 @@ val EuStrings = AppStrings(
|
|||||||
"zati-bat datozenak ere funtzionatzen dute.",
|
"zati-bat datozenak ere funtzionatzen dute.",
|
||||||
|
|
||||||
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
||||||
|
statusSuccess = "Osatuta",
|
||||||
|
statusPending = "Zain",
|
||||||
|
statusFailed = "Huts eginda",
|
||||||
|
statusUnknown = "Ezezaguna",
|
||||||
detailOutgoingTitle = "Irteerako ordainketa",
|
detailOutgoingTitle = "Irteerako ordainketa",
|
||||||
detailIncomingTitle = "Sarrerako ordainketa",
|
detailIncomingTitle = "Sarrerako ordainketa",
|
||||||
detailBack = "Atzera",
|
detailBack = "Atzera",
|
||||||
|
|||||||
@@ -271,6 +271,10 @@ data class AppStrings(
|
|||||||
val searchInfoFooter : String,
|
val searchInfoFooter : String,
|
||||||
|
|
||||||
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
// ── PaymentDetailScreen ───────────────────────────────────────────────────
|
||||||
|
val statusSuccess : String, // e.g. "Success"
|
||||||
|
val statusPending : String, // e.g. "Pending"
|
||||||
|
val statusFailed : String, // e.g. "Failed"
|
||||||
|
val statusUnknown : String, // e.g. "Unknown"
|
||||||
val detailOutgoingTitle : String,
|
val detailOutgoingTitle : String,
|
||||||
val detailIncomingTitle : String,
|
val detailIncomingTitle : String,
|
||||||
val detailBack : String,
|
val detailBack : String,
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.bitcointxoko.gudariwallet.i18n
|
||||||
|
|
||||||
|
fun AppStrings.paymentStatusLabel(status: String): String = when (status.lowercase()) {
|
||||||
|
"success" -> statusSuccess
|
||||||
|
"pending" -> statusPending
|
||||||
|
"failed" -> statusFailed
|
||||||
|
else -> statusUnknown
|
||||||
|
}
|
||||||
@@ -45,8 +45,8 @@ fun HomeTab(
|
|||||||
val balanceState by vm.balanceState.collectAsState()
|
val balanceState by vm.balanceState.collectAsState()
|
||||||
val balanceHidden by vm.balanceHidden.collectAsState()
|
val balanceHidden by vm.balanceHidden.collectAsState()
|
||||||
|
|
||||||
// ── NEW: language switcher state ──────────────────────────────────────────
|
// ── Language switcher state ──────────────────────────────────────────
|
||||||
val supportedTags = remember { listOf("en", "es", "eu") } // add more as you add locale files
|
// val supportedTags = remember { listOf("en", "es", "eu") } // add more as you add locale files
|
||||||
|
|
||||||
val isRefreshing = balanceState is BalanceState.Loading
|
val isRefreshing = balanceState is BalanceState.Loading
|
||||||
|| (balanceState as? BalanceState.Success)?.isRefreshing == true
|
|| (balanceState as? BalanceState.Success)?.isRefreshing == true
|
||||||
@@ -222,12 +222,12 @@ fun HomeTab(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── NEW: Language switcher ─────────────────────────────────
|
// ── NEW: Language switcher ─────────────────────────────────
|
||||||
Spacer(Modifier.height(8.dp))
|
// Spacer(Modifier.height(8.dp))
|
||||||
LanguageSwitcherButton(
|
// LanguageSwitcherButton(
|
||||||
currentTag = lyricist.languageTag,
|
// currentTag = lyricist.languageTag,
|
||||||
supportedTags = supportedTags,
|
// supportedTags = supportedTags,
|
||||||
onSelect = { tag -> lyricist.languageTag = tag }
|
// onSelect = { tag -> lyricist.languageTag = tag }
|
||||||
)
|
// )
|
||||||
// ──────────────────────────────────────────────────────────
|
// ──────────────────────────────────────────────────────────
|
||||||
|
|
||||||
if (showCurrencyPicker) {
|
if (showCurrencyPicker) {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import androidx.compose.ui.text.font.FontFamily
|
|||||||
import androidx.compose.ui.text.style.TextDecoration
|
import androidx.compose.ui.text.style.TextDecoration
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.bitcointxoko.gudariwallet.LocalAppStrings
|
||||||
import com.bitcointxoko.gudariwallet.ui.theme.semanticColors
|
import com.bitcointxoko.gudariwallet.ui.theme.semanticColors
|
||||||
|
|
||||||
// ── Amount + fiat column ─────────────────────────────────────────────────────
|
// ── Amount + fiat column ─────────────────────────────────────────────────────
|
||||||
@@ -63,31 +64,45 @@ internal fun AmountWithFiatColumn(
|
|||||||
@Composable
|
@Composable
|
||||||
internal fun StatusChip(status: String) {
|
internal fun StatusChip(status: String) {
|
||||||
val semantic = semanticColors()
|
val semantic = semanticColors()
|
||||||
|
val strings = LocalAppStrings.current // or however you access Lyricist strings
|
||||||
|
|
||||||
val (containerColor, contentColor) = when (status.lowercase()) {
|
data class ChipStyle(
|
||||||
"success", "complete", "paid" ->
|
val containerColor: Color,
|
||||||
semantic.successContainer to semantic.onSuccessContainer
|
val contentColor: Color,
|
||||||
"pending", "in_flight", "inflight" ->
|
val label: String,
|
||||||
semantic.warningContainer to semantic.onWarningContainer
|
)
|
||||||
"failed", "error", "expired" ->
|
|
||||||
semantic.errorContainer to semantic.onErrorContainer
|
val style = when (status.lowercase()) {
|
||||||
else ->
|
"success", "complete", "paid" -> ChipStyle(
|
||||||
MaterialTheme.colorScheme.surfaceVariant to MaterialTheme.colorScheme.onSurfaceVariant
|
semantic.successContainer, semantic.onSuccessContainer, strings.statusSuccess
|
||||||
|
)
|
||||||
|
"pending", "in_flight", "inflight" -> ChipStyle(
|
||||||
|
semantic.warningContainer, semantic.onWarningContainer, strings.statusPending
|
||||||
|
)
|
||||||
|
"failed", "error", "expired" -> ChipStyle(
|
||||||
|
semantic.errorContainer, semantic.onErrorContainer, strings.statusFailed
|
||||||
|
)
|
||||||
|
else -> ChipStyle(
|
||||||
|
MaterialTheme.colorScheme.surfaceVariant,
|
||||||
|
MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
|
strings.statusUnknown,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
Surface(
|
Surface(
|
||||||
shape = MaterialTheme.shapes.small,
|
shape = MaterialTheme.shapes.small,
|
||||||
color = containerColor,
|
color = style.containerColor,
|
||||||
contentColor = contentColor
|
contentColor = style.contentColor,
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = status.replaceFirstChar { it.uppercase() },
|
text = style.label,
|
||||||
style = MaterialTheme.typography.labelSmall,
|
style = MaterialTheme.typography.labelSmall,
|
||||||
modifier = Modifier.padding(horizontal = 10.dp, vertical = 4.dp)
|
modifier = Modifier.padding(horizontal = 10.dp, vertical = 4.dp)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ── Section card wrapper ─────────────────────────────────────────────────────
|
// ── Section card wrapper ─────────────────────────────────────────────────────
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|||||||
@@ -232,9 +232,6 @@ fun SendScreen(
|
|||||||
Spacer(Modifier.height(8.dp))
|
Spacer(Modifier.height(8.dp))
|
||||||
Text(
|
Text(
|
||||||
text = strings.paymentTakingLongDetail,
|
text = strings.paymentTakingLongDetail,
|
||||||
// "Your payment is still on its way. This may be a hold invoice
|
|
||||||
// that settles when the recipient is ready. You'll get a
|
|
||||||
// notification when it completes — you can safely leave this screen."
|
|
||||||
style = MaterialTheme.typography.bodySmall,
|
style = MaterialTheme.typography.bodySmall,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||||
textAlign = TextAlign.Center
|
textAlign = TextAlign.Center
|
||||||
|
|||||||
Reference in New Issue
Block a user