taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 67f44d7488f5ac192f9210c3c7e62d9f73fa876b
parent 37e9730c4e985d4ed05d6e4f5e62d1ccc870f35c
Author: Iván Ávalos <avalos@disroot.org>
Date:   Tue, 10 Sep 2024 13:44:35 +0200

[wallet] small deposit refactoring

Diffstat:
Mwallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt | 9+++++----
Mwallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt | 52++++++++++++++++++++--------------------------------
Mwallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt | 18+++++++++---------
3 files changed, 34 insertions(+), 45 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt @@ -59,7 +59,8 @@ class DepositFragment : Fragment() { val iban = arguments?.getString("IBAN") if (receiverName != null && iban != null) { - depositManager.makeIbanDeposit(amount, receiverName, iban) + val paytoUri = getIbanPayto(receiverName, iban) + depositManager.makeDeposit(amount, paytoUri) } return ComposeView(requireContext()).apply { @@ -75,7 +76,8 @@ class DepositFragment : Fragment() { amount = amount.withSpec(spec), bitcoinAddress = null, onMakeDeposit = { amount, bitcoinAddress -> - depositManager.makeBitcoinDeposit(amount, bitcoinAddress) + val paytoUri = getBitcoinPayto(bitcoinAddress) + depositManager.makeDeposit(amount, paytoUri) }, ) else MakeDepositComposable( state = state.value, @@ -85,8 +87,7 @@ class DepositFragment : Fragment() { presetName = receiverName, presetIban = iban, validateIban = depositManager::validateIban, - onMakeIbanDeposit = depositManager::makeIbanDeposit, - onMakeTalerBankDeposit = depositManager::makeTalerDeposit, + onMakeDeposit = depositManager::makeDeposit, ) LaunchedEffect(Unit) { diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt @@ -51,38 +51,7 @@ class DepositManager( return u.pathSegments.size >= 1 } - @UiThread - fun makeIbanDeposit(amount: Amount, receiverName: String, iban: String) { - val paytoUri: String = PaytoUriIban( - iban = iban, - bic = null, - targetPath = "", - params = mapOf("receiver-name" to receiverName), - ).paytoUri - makeDeposit(amount, paytoUri) - } - - @UiThread - fun makeTalerDeposit(amount: Amount, receiverName: String, host: String, account: String) { - val paytoUri: String = PaytoUriTalerBank( - host = host, - account = account, - targetPath = "", - params = mapOf("receiver-name" to receiverName), - ).paytoUri - makeDeposit(amount, paytoUri) - } - - @UiThread - fun makeBitcoinDeposit(amount: Amount, bitcoinAddress: String) { - val paytoUri: String = PaytoUriBitcoin( - segwitAddresses = listOf(bitcoinAddress), - targetPath = bitcoinAddress, - ).paytoUri - makeDeposit(amount, paytoUri) - } - - private fun makeDeposit(amount: Amount, uri: String) { + fun makeDeposit(amount: Amount, uri: String) { if (depositState.value is DepositState.FeesChecked) makeDeposit( paytoUri = uri, amount = amount, @@ -168,6 +137,25 @@ class DepositManager( } } +fun getIbanPayto(receiverName: String, iban: String) = PaytoUriIban( + iban = iban, + bic = null, + targetPath = "", + params = mapOf("receiver-name" to receiverName), +).paytoUri + +fun getTalerPayto(receiverName: String, host: String, account: String) = PaytoUriTalerBank( + host = host, + account = account, + targetPath = "", + params = mapOf("receiver-name" to receiverName), +).paytoUri + +fun getBitcoinPayto(bitcoinAddress: String) = PaytoUriBitcoin( + segwitAddresses = listOf(bitcoinAddress), + targetPath = bitcoinAddress, +).paytoUri + @Serializable data class ValidateIbanResponse( val valid: Boolean, diff --git a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt @@ -58,8 +58,7 @@ fun MakeDepositComposable( presetName: String? = null, presetIban: String? = null, validateIban: suspend (iban: String) -> Boolean, - onMakeIbanDeposit: (Amount, String, String) -> Unit, - onMakeTalerBankDeposit: (Amount, String, String, String) -> Unit, + onMakeDeposit: (Amount, String) -> Unit, ) { // TODO: show some placeholder if (supportedWireTypes.isEmpty()) return @@ -92,6 +91,12 @@ fun MakeDepositComposable( var talerHost by rememberSaveable { mutableStateOf(talerBankHostnames.firstOrNull() ?: "") } var talerAccount by rememberSaveable { mutableStateOf("") } + val paytoUri = when(selectedWireType) { + WireType.IBAN -> getIbanPayto(ibanName, ibanIban) + WireType.TalerBank -> getTalerPayto(talerName, talerHost, talerAccount) + else -> null + } + when(selectedWireType) { WireType.IBAN -> { var ibanError by rememberSaveable { mutableStateOf(false) } @@ -178,11 +183,7 @@ fun MakeDepositComposable( enabled = !formError, onClick = { focusManager.clearFocus() - when (selectedWireType) { - WireType.IBAN -> onMakeIbanDeposit(amount, ibanName, ibanIban) - WireType.TalerBank -> onMakeTalerBankDeposit(amount, talerName, talerHost, talerAccount) - else -> {} - } + paytoUri?.let { onMakeDeposit(amount, it) } }, ) { Text( @@ -243,8 +244,7 @@ fun PreviewMakeDepositComposable() { talerBankHostnames = listOf("bank.demo.taler.net", "bank.test.taler.net"), amount = Amount.fromString("TESTKUDOS", "42.23"), validateIban = { true }, - onMakeIbanDeposit = { _, _, _ -> }, - onMakeTalerBankDeposit = { _, _, _, _ -> }, + onMakeDeposit = { _, _ -> }, ) } }