summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-11-01 17:52:26 -0600
committerTorsten Grote <t@grobox.de>2023-11-07 11:07:40 -0300
commit8372c75bbb59c295f25c830fbdc08006e97c2e4c (patch)
treec7c358c39593768c407e001b57cf694f4833daad /wallet/src/main/java/net/taler
parent4aaf6600edc8ee82c53685a023d93807202b494b (diff)
downloadtaler-android-8372c75bbb59c295f25c830fbdc08006e97c2e4c.tar.gz
taler-android-8372c75bbb59c295f25c830fbdc08006e97c2e4c.tar.bz2
taler-android-8372c75bbb59c295f25c830fbdc08006e97c2e4c.zip
[wallet] Upgrade KYC to new API
Diffstat (limited to 'wallet/src/main/java/net/taler')
-rw-r--r--wallet/src/main/java/net/taler/wallet/Utils.kt11
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt29
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt8
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt1
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt24
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()