gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] 05/08: [wallet] Refactor wire transfer and remove


From: gnunet
Subject: [taler-taler-android] 05/08: [wallet] Refactor wire transfer and remove BIC/SWIFT field
Date: Wed, 25 Oct 2023 15:40:34 +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 687418fc8371dbeb5b4b2b4eddef1f78ce9bed6b
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Tue Oct 24 12:44:45 2023 -0600

    [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(-)

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

-- 
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]