@@ -22,7 +22,9 @@ import to.bitkit.ui.shared.toast.ToastEventBus
2222import to.bitkit.viewmodels.SendUiState
2323import javax.inject.Inject
2424
25- const val MAX_INPUT_VALUE = 999u
25+ private const val MAX_DIGITS = 3
26+ private const val MAX_VALUE = 999u
27+ private const val MAX_RATIO = 0.5
2628
2729@HiltViewModel
2830class SendFeeViewModel @Inject constructor(
@@ -35,7 +37,7 @@ class SendFeeViewModel @Inject constructor(
3537 val uiState = _uiState .asStateFlow()
3638
3739 private lateinit var sendUiState: SendUiState
38- private var maxSatsPerVByte: UInt = MAX_INPUT_VALUE
40+ private var maxSatsPerVByte: UInt = MAX_VALUE
3941 private var maxFee: ULong = 0u
4042
4143 fun init (sendUiState : SendUiState ) {
@@ -67,7 +69,7 @@ class SendFeeViewModel @Inject constructor(
6769
6870 private fun getFeeLimit (): ULong {
6971 val totalBalance = walletRepo.balanceState.value.totalOnchainSats
70- val halfBalance = (totalBalance.toDouble() * 0.5 ).toULong()
72+ val halfBalance = (totalBalance.toDouble() * MAX_RATIO ).toULong()
7173 val remainingFunds = maxOf(0u , totalBalance - sendUiState.amount)
7274 return minOf(halfBalance, remainingFunds)
7375 }
@@ -76,7 +78,7 @@ class SendFeeViewModel @Inject constructor(
7678 val currentInput = _uiState .value.input
7779 val newInput = when (key) {
7880 KEY_DELETE -> if (currentInput.isNotEmpty()) currentInput.dropLast(1 ) else " "
79- else -> if (currentInput.length < 3 ) (currentInput + key).trimStart(' 0' ) else currentInput
81+ else -> if (currentInput.length < MAX_DIGITS ) (currentInput + key).trimStart(' 0' ) else currentInput
8082 }
8183
8284 val satsPerVByte = newInput.toUIntOrNull() ? : 0u
@@ -157,7 +159,7 @@ class SendFeeViewModel @Inject constructor(
157159 maxSatsPerVByte = if (feeFor1SatPerVByte > 0uL ) {
158160 (maxFee / feeFor1SatPerVByte).toUInt().coerceAtLeast(1u )
159161 } else {
160- MAX_INPUT_VALUE
162+ MAX_VALUE
161163 }
162164 }
163165 }
0 commit comments