From 9a1bb3e0082ebe2511c2e23267a1f16b3625757f Mon Sep 17 00:00:00 2001 From: rasputin Date: Tue, 2 Jun 2026 15:16:37 +0200 Subject: [PATCH] fix: show fiat conversion on paymentsent --- .../gudariwallet/ui/SendScreen.kt | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt index ced6d99..8f2eb09 100644 --- a/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt +++ b/app/src/main/java/com/bitcointxoko/gudariwallet/ui/SendScreen.kt @@ -25,6 +25,8 @@ import com.bitcointxoko.gudariwallet.ui.send.LnurlInvoiceConfirmCard import com.bitcointxoko.gudariwallet.ui.send.LnurlPayForm import com.bitcointxoko.gudariwallet.util.SendInputDetector import com.bitcointxoko.gudariwallet.util.feePpm +import com.bitcointxoko.gudariwallet.util.formatFiat +import com.bitcointxoko.gudariwallet.util.satsToFiat import kotlinx.coroutines.launch @Composable @@ -35,11 +37,11 @@ fun SendScreen(vm: WalletViewModel) { val activity = context as FragmentActivity val clipboard = LocalClipboard.current val scope = rememberCoroutineScope() - - // Read rate directly from VM cache — same source HomeTab uses. - // Both are null when no currency is selected; fiat display is suppressed. - val fiatRate = vm.fiatRate // Double? - val fiatCurrency = vm.fiatCurrency // String? + val balanceState by vm.balanceState.collectAsStateWithLifecycle() + val fiatRate = (balanceState as? BalanceState.Success)?.let { s -> + s.fiatAmount?.let { if (s.sats > 0) s.sats.toDouble() / it else null } + } + val fiatCurrency = (balanceState as? BalanceState.Success)?.fiatCurrency DisposableEffect(Unit) { onDispose { vm.resetSendState() } } @@ -169,7 +171,16 @@ fun SendScreen(vm: WalletViewModel) { text = "${state.amountSats} sats", color = MaterialTheme.colorScheme.onSurfaceVariant ) - + val fiatAmount = if (fiatRate != null && fiatCurrency != null) { + satsToFiat(state.amountSats, fiatRate) + } else null + if (fiatAmount != null && fiatCurrency != null) { + Text( + text = "≈ ${formatFiat(fiatAmount, fiatCurrency)}", + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } Spacer(Modifier.height(4.dp)) val feeText = when { state.feeSats == null || state.feeSats == 0L -> "No fees"