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:
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 = { _, _ -> },
)
}
}