feat: add details button to paymentsent
This commit is contained in:
@@ -30,7 +30,7 @@ import com.bitcointxoko.gudariwallet.util.satsToFiat
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@Composable
|
||||
fun SendScreen(vm: WalletViewModel) {
|
||||
fun SendScreen(vm: WalletViewModel, onViewDetails: (paymentHash: String) -> Unit = {}) {
|
||||
val sendState: SendState by vm.sendState.collectAsStateWithLifecycle()
|
||||
var input by remember { mutableStateOf("") }
|
||||
val context = LocalContext.current
|
||||
@@ -199,6 +199,11 @@ fun SendScreen(vm: WalletViewModel) {
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
Spacer(Modifier.height(32.dp))
|
||||
OutlinedButton(
|
||||
onClick = { onViewDetails(state.paymentHash) },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) { Text("Details") }
|
||||
Spacer(Modifier.height(8.dp))
|
||||
Button(
|
||||
onClick = { vm.resetSendState(); input = "" },
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
|
||||
@@ -83,7 +83,8 @@ sealed class SendState {
|
||||
data object Paying : SendState()
|
||||
data class PaymentSent(
|
||||
val amountSats : Long,
|
||||
val feeSats : Long? = null
|
||||
val feeSats : Long? = null,
|
||||
val paymentHash: String
|
||||
) : SendState()
|
||||
data class Error(val message: String) : SendState()
|
||||
}
|
||||
|
||||
@@ -271,7 +271,16 @@ fun WalletScreen(
|
||||
navController.navigate("payment_detail/$checkingId")
|
||||
}
|
||||
)}
|
||||
composable(TabItem.Send.route) { SendScreen(vm) }
|
||||
composable(TabItem.Send.route) {
|
||||
SendScreen(
|
||||
vm = vm,
|
||||
onViewDetails = { paymentHash ->
|
||||
navController.navigate("payment_detail/$paymentHash") {
|
||||
launchSingleTop = true
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
// Scanner — full screen, no bottom chrome
|
||||
composable(ROUTE_SCANNER) {
|
||||
|
||||
@@ -74,7 +74,8 @@ class SendViewModel(
|
||||
}.getOrNull()
|
||||
_sendState.value = SendState.PaymentSent(
|
||||
amountSats = amountSats,
|
||||
feeSats = feeSats
|
||||
feeSats = feeSats,
|
||||
paymentHash = response.paymentHash
|
||||
)
|
||||
balanceVm.refreshBalance()
|
||||
}
|
||||
@@ -219,14 +220,16 @@ class SendViewModel(
|
||||
_sendState.value = SendState.Paying
|
||||
|
||||
val directResult = runCatching { repo.payBolt11(state.bolt11) }
|
||||
val paymentHash = directResult.getOrThrow().paymentHash
|
||||
|
||||
if (directResult.isSuccess) {
|
||||
val feeSats = runCatching {
|
||||
repo.getPaymentDetail(directResult.getOrThrow().paymentHash).details?.feeSat
|
||||
repo.getPaymentDetail(paymentHash).details?.feeSat
|
||||
}.getOrNull()
|
||||
_sendState.value = SendState.PaymentSent(
|
||||
amountSats = state.amountSats,
|
||||
feeSats = feeSats
|
||||
feeSats = feeSats,
|
||||
paymentHash = paymentHash
|
||||
)
|
||||
balanceVm.refreshBalance()
|
||||
return@launch
|
||||
@@ -451,7 +454,8 @@ class SendViewModel(
|
||||
}.getOrNull()
|
||||
_sendState.value = SendState.PaymentSent(
|
||||
amountSats = amountMsat / WalletConstants.MSAT_PER_SAT,
|
||||
feeSats = feeSats
|
||||
feeSats = feeSats,
|
||||
paymentHash = paymentHash
|
||||
)
|
||||
balanceVm.refreshBalance()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user