gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 02/02: [wallet] Clean up KYC handling a bit


From: gnunet
Subject: [taler-taler-android] 02/02: [wallet] Clean up KYC handling a bit
Date: Tue, 17 Jan 2023 16:24:24 +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 6622f7d7cf6a309af085a2fd1dea21c5ee6826d5
Author: Torsten Grote <t@grobox.de>
AuthorDate: Tue Jan 17 12:19:39 2023 -0300

    [wallet] Clean up KYC handling a bit
    
    #0007566
---
 wallet/src/main/java/net/taler/wallet/Utils.kt     | 12 +++++++++++
 .../wallet/transactions/TransactionAdapter.kt      | 16 ++++++---------
 .../transactions/TransactionWithdrawalFragment.kt  | 23 ++++++++++------------
 .../wallet/transactions/TransactionsFragment.kt    | 11 ++++-------
 .../net/taler/wallet/withdraw/WithdrawManager.kt   |  2 ++
 5 files changed, 34 insertions(+), 30 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/Utils.kt 
b/wallet/src/main/java/net/taler/wallet/Utils.kt
index 7edc694..d5abca2 100644
--- a/wallet/src/main/java/net/taler/wallet/Utils.kt
+++ b/wallet/src/main/java/net/taler/wallet/Utils.kt
@@ -31,6 +31,9 @@ import androidx.annotation.RequiresApi
 import androidx.core.content.getSystemService
 import net.taler.common.Amount
 import net.taler.common.AmountParserException
+import net.taler.wallet.backend.TalerErrorInfo
+import net.taler.wallet.transactions.Transaction
+import net.taler.wallet.withdraw.ERROR_KYC
 
 const val CURRENCY_BTC = "BITCOINBTC"
 
@@ -96,3 +99,12 @@ fun getAmount(currency: String, text: String): Amount? {
         null
     }
 }
+
+fun <T> Transaction.handleKyc(notRequired: () -> T, required: (TalerErrorInfo) 
-> T): T {
+    return error?.let { error ->
+        when (error.code) {
+            ERROR_KYC -> required(error)
+            else -> notRequired()
+        }
+    } ?: notRequired()
+}
diff --git 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt
index c4ec060..fa30f5c 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt
@@ -36,6 +36,7 @@ import com.google.android.material.button.MaterialButton
 import net.taler.common.exhaustive
 import net.taler.common.toRelativeTime
 import net.taler.wallet.R
+import net.taler.wallet.handleKyc
 import net.taler.wallet.transactions.TransactionAdapter.TransactionViewHolder
 
 internal class TransactionAdapter(
@@ -127,16 +128,11 @@ internal class TransactionAdapter(
         }
 
         private fun bindActionButton(transaction: Transaction) {
-            actionButton.setOnClickListener { 
listener.onActionButtonClicked(transaction) }
-            actionButton.visibility = transaction.error?.let { error ->
-                when (error.code) {
-                    7025 -> { // KYC
-                        actionButton.setText(R.string.transaction_action_kyc)
-                        VISIBLE
-                    }
-                    else -> GONE
-                }
-            } ?: GONE
+            actionButton.visibility = transaction.handleKyc({ GONE }) {
+                actionButton.setOnClickListener { 
listener.onActionButtonClicked(transaction) }
+                actionButton.setText(R.string.transaction_action_kyc)
+                VISIBLE
+            }
         }
 
         private fun bindAmount(transaction: Transaction) {
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 feea5ba..31c70b5 100644
--- 
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
+++ 
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt
@@ -33,6 +33,7 @@ import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 import net.taler.wallet.cleanExchange
 import net.taler.wallet.databinding.FragmentTransactionWithdrawalBinding
+import net.taler.wallet.handleKyc
 import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
 import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
 import net.taler.wallet.withdraw.createManualTransferRequired
@@ -104,25 +105,21 @@ class TransactionWithdrawalFragment : 
TransactionDetailFragment() {
                     )
                     withdrawManager.viewManualWithdrawal(status)
                     findNavController().navigate(
-                        
R.id.action_nav_transactions_detail_withdrawal_to_nav_exchange_manual_withdrawal_success)
+                        
R.id.action_nav_transactions_detail_withdrawal_to_nav_exchange_manual_withdrawal_success
+                    )
                 }
             } else ui.confirmWithdrawalButton.visibility = GONE
         } else ui.confirmWithdrawalButton.visibility = GONE
     }
 
     private fun setupActionButton(t: TransactionWithdrawal) {
-        ui.actionButton.visibility = t.error?.let { error ->
-            when (error.code) {
-                7025 -> { // KYC
-                    ui.actionButton.setText(R.string.transaction_action_kyc)
-                    val i = Intent(ACTION_VIEW).apply {
-                        data = Uri.parse(error.kycUrl)
-                    }
-                    ui.actionButton.setOnClickListener { startActivitySafe(i) }
-                    VISIBLE
-                }
-                else -> GONE
+        ui.actionButton.visibility = t.handleKyc({ GONE }) {
+            ui.actionButton.setText(R.string.transaction_action_kyc)
+            val i = Intent(ACTION_VIEW).apply {
+                data = Uri.parse(it.kycUrl)
             }
-        } ?: GONE
+            ui.actionButton.setOnClickListener { startActivitySafe(i) }
+            VISIBLE
+        }
     }
 }
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 f8c1047..20da36b 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
@@ -45,6 +45,7 @@ import net.taler.common.startActivitySafe
 import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 import net.taler.wallet.databinding.FragmentTransactionsBinding
+import net.taler.wallet.handleKyc
 
 interface OnTransactionClickListener {
     fun onTransactionClicked(transaction: Transaction)
@@ -182,13 +183,9 @@ class TransactionsFragment : Fragment(), 
OnTransactionClickListener, ActionMode.
     }
 
     override fun onActionButtonClicked(transaction: Transaction) {
-        transaction.error?.let {error ->
-            when (error.code) {
-                7025 -> { // KYC
-                    val i = Intent(Intent.ACTION_VIEW, Uri.parse(error.kycUrl))
-                    startActivitySafe(i)
-                }
-            }
+        transaction.handleKyc({ error("Unhandled Action Button Event") }) {
+            val i = Intent(Intent.ACTION_VIEW, Uri.parse(it.kycUrl))
+            startActivitySafe(i)
         }
     }
 
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt 
b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
index 1698a10..326c9d8 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
@@ -35,6 +35,8 @@ import net.taler.wallet.exchanges.ExchangeFees
 import net.taler.wallet.exchanges.ExchangeItem
 import net.taler.wallet.withdraw.WithdrawStatus.ReceivedDetails
 
+const val ERROR_KYC = 7025
+
 sealed class WithdrawStatus {
     data class Loading(val talerWithdrawUri: String? = null) : WithdrawStatus()
     data class NeedsExchange(val exchangeSelection: Event<ExchangeSelection>) 
: WithdrawStatus()

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