diff --git a/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt b/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt index b4cdfb8d1..bc026b863 100644 --- a/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt +++ b/app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt @@ -1146,13 +1146,15 @@ class AppViewModel @Inject constructor( if (amount == 0uL) return false return when (payMethod) { - SendMethod.LIGHTNING -> when (val lnurl = _sendUiState.value.lnurl) { - null -> lightningRepo.canSend(amount) - is LnurlParams.LnurlWithdraw -> amount < lnurl.data.maxWithdrawableSat() - is LnurlParams.LnurlPay -> { - val maxSat = lnurl.data.maxSendableSat() - - amount <= maxSat && lightningRepo.canSend(amount) + SendMethod.LIGHTNING -> { + val maxSendable = maxSendableLightningSats() + when (val lnurl = _sendUiState.value.lnurl) { + null -> amount <= maxSendable && lightningRepo.canSend(amount) + is LnurlParams.LnurlWithdraw -> amount < lnurl.data.maxWithdrawableSat() + is LnurlParams.LnurlPay -> { + val maxSat = lnurl.data.maxSendableSat() + amount <= maxSat && amount <= maxSendable && lightningRepo.canSend(amount) + } } } @@ -1160,6 +1162,12 @@ class AppViewModel @Inject constructor( } } + private fun maxSendableLightningSats(): ULong { + val max = walletRepo.balanceState.value.maxSendLightningSats + val fee = _sendUiState.value.estimatedRoutingFee + return max.safe() - fee.safe() + } + private fun onPasteClick() { val data = context.getClipboardText()?.trim() if (data.isNullOrBlank()) {