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