From 687418fc8371dbeb5b4b2b4eddef1f78ce9bed6b Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Tue, 24 Oct 2023 12:44:45 -0600 Subject: [wallet] Refactor wire transfer and remove BIC/SWIFT field --- .../net/taler/wallet/deposit/DepositFragment.kt | 7 +- .../net/taler/wallet/deposit/DepositManager.kt | 10 +- .../taler/wallet/deposit/MakeDepositComposable.kt | 108 ++++++--------------- 3 files changed, 34 insertions(+), 91 deletions(-) (limited to 'wallet/src/main/java/net/taler') diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt index d773293..28dcc3f 100644 --- a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt @@ -48,10 +48,8 @@ class DepositFragment : Fragment() { } ?: error("no amount passed") val receiverName = arguments?.getString("receiverName") val iban = arguments?.getString("IBAN") - val bic = arguments?.getString("BIC") ?: "" - if (receiverName != null && iban != null) { - onDepositButtonClicked(amount, receiverName, iban, bic) + onDepositButtonClicked(amount, receiverName, iban) } return ComposeView(requireContext()).apply { setContent { @@ -109,8 +107,7 @@ class DepositFragment : Fragment() { amount: Amount, receiverName: String, iban: String, - bic: String, ) { - depositManager.onDepositButtonClicked(amount, receiverName, iban, bic) + depositManager.onDepositButtonClicked(amount, receiverName, iban) } } diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt index 35cca1c..0075f95 100644 --- a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt +++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt @@ -46,10 +46,10 @@ class DepositManager( } @UiThread - fun onDepositButtonClicked(amount: Amount, receiverName: String, iban: String, bic: String) { + fun onDepositButtonClicked(amount: Amount, receiverName: String, iban: String) { if (depositState.value is DepositState.FeesChecked) { // fees already checked, so IBAN was validated, can make deposit directly - makeIbanDeposit(amount, receiverName, iban, bic) + makeIbanDeposit(amount, receiverName, iban) } else { // validate IBAN first mDepositState.value = DepositState.CheckingFees @@ -62,7 +62,7 @@ class DepositManager( }.onSuccess { response -> if (response.valid) { // only prepare/make deposit, if IBAN is valid - makeIbanDeposit(amount, receiverName, iban, bic) + makeIbanDeposit(amount, receiverName, iban) } else { mDepositState.value = DepositState.IbanInvalid } @@ -72,10 +72,10 @@ class DepositManager( } @UiThread - private fun makeIbanDeposit(amount: Amount, receiverName: String, iban: String, bic: String) { + private fun makeIbanDeposit(amount: Amount, receiverName: String, iban: String) { val paytoUri: String = PaytoUriIban( iban = iban, - bic = bic, + bic = null, targetPath = "", params = mapOf("receiver-name" to receiverName), ).paytoUri diff --git a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt index 74b97d1..5fdbebf 100644 --- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt +++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt @@ -40,13 +40,15 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalFocusManager -import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import net.taler.common.Amount import net.taler.wallet.R +import net.taler.wallet.transactions.AmountType.Negative +import net.taler.wallet.transactions.AmountType.Positive +import net.taler.wallet.transactions.TransactionAmountComposable @Composable fun MakeDepositComposable( @@ -54,7 +56,7 @@ fun MakeDepositComposable( amount: Amount, presetName: String? = null, presetIban: String? = null, - onMakeDeposit: (Amount, String, String, String) -> Unit, + onMakeDeposit: (Amount, String, String) -> Unit, ) { val scrollState = rememberScrollState() Column( @@ -65,13 +67,12 @@ fun MakeDepositComposable( ) { var name by rememberSaveable { mutableStateOf(presetName ?: "") } var iban by rememberSaveable { mutableStateOf(presetIban ?: "") } - var bic by rememberSaveable { mutableStateOf("") } - var bicInvalid by rememberSaveable { mutableStateOf(false) } val focusRequester = remember { FocusRequester() } OutlinedTextField( modifier = Modifier .padding(16.dp) - .focusRequester(focusRequester), + .focusRequester(focusRequester) + .fillMaxWidth(), value = name, enabled = !state.showFees, onValueChange = { input -> @@ -93,7 +94,8 @@ fun MakeDepositComposable( val ibanError = state is DepositState.IbanInvalid OutlinedTextField( modifier = Modifier - .padding(16.dp), + .padding(horizontal = 16.dp) + .fillMaxWidth(), value = iban, enabled = !state.showFees, onValueChange = { input -> @@ -118,46 +120,14 @@ fun MakeDepositComposable( ) } ) - OutlinedTextField( - modifier = Modifier - .padding(16.dp), - value = bic, - enabled = !state.showFees, - onValueChange = { input -> - bicInvalid = false - bic = input - }, - isError = bicInvalid, - supportingText = { - if (bicInvalid) { - Text( - modifier = Modifier.fillMaxWidth(), - text = stringResource(R.string.send_deposit_bic_error), - color = MaterialTheme.colorScheme.error - ) - } + TransactionAmountComposable( + label = if (state.effectiveDepositAmount == null) { + stringResource(R.string.amount_chosen) + } else { + stringResource(R.string.send_deposit_amount_effective) }, - label = { - Text( - text = stringResource(R.string.send_deposit_bic), - ) - } - ) - val amountTitle = if (state.effectiveDepositAmount == null) { - R.string.amount_chosen - } else R.string.send_deposit_amount_effective - Text( - modifier = Modifier.padding(horizontal = 16.dp), - text = stringResource(id = amountTitle), - ) - val shownAmount = if (state.effectiveDepositAmount == null) amount else { - state.effectiveDepositAmount - } - Text( - modifier = Modifier.padding(16.dp), - fontSize = 24.sp, - color = colorResource(R.color.green), - text = shownAmount.toString(), + amount = state.effectiveDepositAmount ?: amount, + amountType = Positive, ) AnimatedVisibility(visible = state.showFees) { Column( @@ -167,29 +137,17 @@ fun MakeDepositComposable( val totalAmount = state.totalDepositCost ?: amount val effectiveAmount = state.effectiveDepositAmount ?: Amount.zero(amount.currency) val fee = totalAmount - effectiveAmount - Text( - modifier = Modifier.padding(horizontal = 16.dp), - text = stringResource(id = R.string.withdraw_fees), - ) - Text( - modifier = Modifier.padding(16.dp), - fontSize = 24.sp, - color = if (fee.isZero()) colorResource(R.color.green) else MaterialTheme.colorScheme.error, - text = if (fee.isZero()) { - fee.toString() - } else { - stringResource(R.string.amount_negative, fee.toString()) - }, - ) - Text( - modifier = Modifier.padding(horizontal = 16.dp), - text = stringResource(id = R.string.send_amount), + + TransactionAmountComposable( + label = stringResource(R.string.withdraw_fees), + amount = fee, + amountType = if (fee.isZero()) Positive else Negative, ) - Text( - modifier = Modifier.padding(16.dp), - fontSize = 24.sp, - color = colorResource(R.color.green), - text = totalAmount.toString(), + + TransactionAmountComposable( + label = stringResource(R.string.send_amount), + amount = totalAmount, + amountType = Positive, ) } } @@ -207,11 +165,7 @@ fun MakeDepositComposable( enabled = iban.isNotBlank(), onClick = { focusManager.clearFocus() - if (isValidBic(bic)) { - onMakeDeposit(amount, name, iban, bic) - } else { - bicInvalid = true - } + onMakeDeposit(amount, name, iban) }, ) { Text( @@ -224,14 +178,6 @@ fun MakeDepositComposable( } } -private val bicRegex = Regex("[a-zA-Z\\d]{8,11}") - -/** - * performs some minimal verification, nothing perfect. - * Allows for empty string. - */ -private fun isValidBic(bic: String): Boolean = bic.isEmpty() || bicRegex.matches(bic) - @Preview @Composable fun PreviewMakeDepositComposable() { @@ -242,7 +188,7 @@ fun PreviewMakeDepositComposable() { ) MakeDepositComposable( state = state, - amount = Amount.fromString("TESTKUDOS", "42.23")) { _, _, _, _ -> + amount = Amount.fromString("TESTKUDOS", "42.23")) { _, _, _ -> } } } -- cgit v1.2.3