summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-10-24 12:44:45 -0600
committerTorsten Grote <t@grobox.de>2023-10-25 10:32:23 -0300
commit687418fc8371dbeb5b4b2b4eddef1f78ce9bed6b (patch)
tree107db851abab1ddf69f08e3dc1e5408d390b9526 /wallet/src/main/java/net/taler
parent9a1e820389d8b242cc9b3fb247d4c7b4c8bebde0 (diff)
downloadtaler-android-687418fc8371dbeb5b4b2b4eddef1f78ce9bed6b.tar.gz
taler-android-687418fc8371dbeb5b4b2b4eddef1f78ce9bed6b.tar.bz2
taler-android-687418fc8371dbeb5b4b2b4eddef1f78ce9bed6b.zip
[wallet] Refactor wire transfer and remove BIC/SWIFT field
Diffstat (limited to 'wallet/src/main/java/net/taler')
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt7
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt10
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt108
3 files changed, 34 insertions, 91 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
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")) { _, _, _ ->
}
}
}