gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 01/02: [wallet] Upgrade KYC to new API


From: gnunet
Subject: [taler-taler-android] 01/02: [wallet] Upgrade KYC to new API
Date: Tue, 07 Nov 2023 15:08:13 +0100

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 8372c75bbb59c295f25c830fbdc08006e97c2e4c
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Wed Nov 1 17:52:26 2023 -0600

    [wallet] Upgrade KYC to new API
---
 wallet/src/main/java/net/taler/wallet/Utils.kt     | 11 --------
 .../wallet/transactions/ActionButtonComposable.kt  | 29 ++++++++--------------
 .../transactions/TransactionWithdrawalFragment.kt  |  8 +++---
 .../net/taler/wallet/transactions/Transactions.kt  |  1 +
 .../wallet/transactions/TransactionsFragment.kt    | 24 ++----------------
 5 files changed, 17 insertions(+), 56 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/Utils.kt 
b/wallet/src/main/java/net/taler/wallet/Utils.kt
index d1cdf8c..8b34531 100644
--- a/wallet/src/main/java/net/taler/wallet/Utils.kt
+++ b/wallet/src/main/java/net/taler/wallet/Utils.kt
@@ -40,9 +40,7 @@ import net.taler.common.Amount
 import net.taler.common.AmountParserException
 import net.taler.common.showError
 import net.taler.common.startActivitySafe
-import net.taler.wallet.backend.TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED
 import net.taler.wallet.backend.TalerErrorInfo
-import net.taler.wallet.transactions.Transaction
 
 const val CURRENCY_BTC = "BITCOINBTC"
 
@@ -115,15 +113,6 @@ fun Context.getAttrColor(attr: Int): Int {
     return value.data
 }
 
-fun <T> Transaction.handleKyc(notRequired: () -> T, required: (TalerErrorInfo) 
-> T): T {
-    return error?.let { error ->
-        when (error.code) {
-            WALLET_WITHDRAWAL_KYC_REQUIRED -> required(error)
-            else -> notRequired()
-        }
-    } ?: notRequired()
-}
-
 fun launchInAppBrowser(context: Context, url: String) {
     val builder = CustomTabsIntent.Builder()
     val intent = builder.build().intent
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt
index d4c12aa..778b985 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt
@@ -28,9 +28,10 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
 import net.taler.wallet.R
-import net.taler.wallet.backend.TalerErrorCode
+import net.taler.wallet.transactions.TransactionMajorState.Pending
+import net.taler.wallet.transactions.TransactionMinorState.BankConfirmTransfer
+import net.taler.wallet.transactions.TransactionMinorState.KycRequired
 import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
-import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
 
 interface ActionListener {
     enum class Type {
@@ -48,25 +49,15 @@ fun ActionButton(
     tx: TransactionWithdrawal,
     listener: ActionListener,
 ) {
-    if (tx.error != null) {
-        // There is an error!
-        when (tx.error.code) {
-            TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED -> {
-                KycButton(modifier, tx, listener)
-            }
+    // TODO: translate manual transfer to DD37 equivalent
+    if (tx.error == null && !tx.confirmed && tx.withdrawalDetails is 
ManualTransfer) {
+        ConfirmManualButton(modifier, tx, listener)
+    } else if (tx.txState.major == Pending) {
+        when (tx.txState.minor) {
+            KycRequired -> KycButton(modifier, tx, listener)
+            BankConfirmTransfer -> ConfirmBankButton(modifier, tx, listener)
             else -> {}
         }
-    } else if (!tx.confirmed) {
-        // There is a transaction!
-        if (tx.withdrawalDetails is TalerBankIntegrationApi &&
-            tx.withdrawalDetails.bankConfirmationUrl != null
-        ) {
-            // The transaction can be completed with a link!
-            ConfirmBankButton(modifier, tx, listener)
-        } else if (tx.withdrawalDetails is ManualTransfer) {
-            // The transaction must be completed manually!
-            ConfirmManualButton(modifier, tx, listener)
-        }
     }
 }
 
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
index 52bd998..0cd6d60 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
@@ -28,7 +28,6 @@ import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 import net.taler.wallet.compose.TalerSurface
 import net.taler.wallet.launchInAppBrowser
-import net.taler.wallet.showError
 import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
 import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
 import net.taler.wallet.withdraw.TransactionWithdrawalComposable
@@ -61,9 +60,10 @@ class TransactionWithdrawalFragment : 
TransactionDetailFragment(), ActionListene
     override fun onActionButtonClicked(tx: Transaction, type: 
ActionListener.Type) {
         when (type) {
             ActionListener.Type.COMPLETE_KYC -> {
-                tx.error?.getStringExtra("kycUrl")?.let { kycUrl ->
-                    launchInAppBrowser(requireContext(), kycUrl)
-                } ?: tx.error?.let { showError(it) }
+                if (tx !is TransactionWithdrawal) return
+                tx.kycUrl?.let {
+                    launchInAppBrowser(requireContext(), it)
+                }
             }
 
             ActionListener.Type.CONFIRM_WITH_BANK -> {
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
index 6b1d135..e7f17c0 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
@@ -155,6 +155,7 @@ class TransactionWithdrawal(
     override val timestamp: Timestamp,
     override val txState: TransactionState,
     override val txActions: List<TransactionAction>,
+    val kycUrl: String? = null,
     val exchangeBaseUrl: String,
     val withdrawalDetails: WithdrawalDetails,
     override val error: TalerErrorInfo? = null,
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
index 032f2de..2f00bf8 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
@@ -44,13 +44,12 @@ import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 import net.taler.wallet.TAG
 import net.taler.wallet.databinding.FragmentTransactionsBinding
-import net.taler.wallet.handleKyc
-import net.taler.wallet.launchInAppBrowser
 import net.taler.wallet.showError
+import net.taler.wallet.transactions.TransactionMajorState.*
+import net.taler.wallet.transactions.TransactionMinorState.*
 
 interface OnTransactionClickListener {
     fun onTransactionClicked(transaction: Transaction)
-    fun onActionButtonClicked(transaction: Transaction)
 }
 
 class TransactionsFragment : Fragment(), OnTransactionClickListener, 
ActionMode.Callback {
@@ -183,25 +182,6 @@ class TransactionsFragment : Fragment(), 
OnTransactionClickListener, ActionMode.
         }
     }
 
-    override fun onActionButtonClicked(transaction: Transaction) {
-        if (transaction.error != null) {
-            transaction.handleKyc({ error("Unhandled Action Button Event") }) 
{ error ->
-                error.getStringExtra("kycUrl")?.let {
-                    launchInAppBrowser(requireContext(), it)
-                }
-            }
-        } else if (transaction is TransactionWithdrawal && 
!transaction.confirmed) {
-            if (transaction.withdrawalDetails is 
WithdrawalDetails.TalerBankIntegrationApi &&
-                transaction.withdrawalDetails.bankConfirmationUrl != null
-            ) {
-                launchInAppBrowser(
-                    context = requireContext(),
-                    url = transaction.withdrawalDetails.bankConfirmationUrl,
-                )
-            }
-        }
-    }
-
     private fun onTransactionsResult(result: TransactionsResult) = when 
(result) {
         is TransactionsResult.Error -> {
             ui.list.fadeOut()

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