[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] 01/02: [wallet] Do some minimal BIC validation for
From: |
gnunet |
Subject: |
[taler-taler-android] 01/02: [wallet] Do some minimal BIC validation for bank deposits |
Date: |
Thu, 13 Apr 2023 19:29:33 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository taler-android.
commit 513c2cee26be3fd837ba6df8ef21ee3116ca9cf9
Author: Torsten Grote <t@grobox.de>
AuthorDate: Thu Apr 13 14:22:31 2023 -0300
[wallet] Do some minimal BIC validation for bank deposits
---
.../taler/wallet/deposit/MakeDepositComposable.kt | 26 +++++++++++++++++++++-
wallet/src/main/res/values/strings.xml | 1 +
2 files changed, 26 insertions(+), 1 deletion(-)
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 176ff97..3c93ed7 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
@@ -68,6 +68,7 @@ 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
@@ -125,8 +126,19 @@ fun MakeDepositComposable(
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
+ )
+ }
+ },
label = {
Text(
text = stringResource(R.string.send_deposit_bic),
@@ -197,7 +209,11 @@ fun MakeDepositComposable(
enabled = iban.isNotBlank(),
onClick = {
focusManager.clearFocus()
- onMakeDeposit(amount, name, iban, bic)
+ if (isValidBic(bic)) {
+ onMakeDeposit(amount, name, iban, bic)
+ } else {
+ bicInvalid = true
+ }
},
) {
Text(
@@ -210,6 +226,14 @@ 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() {
diff --git a/wallet/src/main/res/values/strings.xml
b/wallet/src/main/res/values/strings.xml
index 734a233..4225a6b 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -139,6 +139,7 @@ GNU Taler is immune against many types of fraud, such as
phishing of credit card
<string name="send_deposit_title">Deposit to a bank account</string>
<string name="send_deposit_iban">IBAN</string>
<string name="send_deposit_iban_error">IBAN is invalid</string>
+ <string name="send_deposit_bic_error">BIC is invalid</string>
<string name="send_deposit_bic">BIC/SWIFT</string>
<string name="send_deposit_name">Account holder</string>
<string name="send_deposit_bitcoin_address">Bitcoin address</string>
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.