gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]