taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit ba6c8259009814beb871033ed912d15b2e7ae0d4
parent f0609c55fcc1ac7a37971065f73522c381804cbc
Author: Iván Ávalos <avalos@disroot.org>
Date:   Thu, 22 Aug 2024 12:57:05 +0200

[wallet] WIP: balance KYC

Diffstat:
Mwallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt | 3++-
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt | 10+++++++++-
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionState.kt | 6++++++
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionStateComposable.kt | 4++++
Mwallet/src/main/res/values/strings.xml | 2++
5 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt b/wallet/src/main/java/net/taler/wallet/transactions/ActionButtonComposable.kt @@ -30,6 +30,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import net.taler.wallet.R import net.taler.wallet.transactions.TransactionMajorState.Pending +import net.taler.wallet.transactions.TransactionMinorState.BalanceKycRequired import net.taler.wallet.transactions.TransactionMinorState.BankConfirmTransfer import net.taler.wallet.transactions.TransactionMinorState.ExchangeWaitReserve import net.taler.wallet.transactions.TransactionMinorState.KycRequired @@ -52,7 +53,7 @@ fun ActionButton( ) { if (tx.txState.major == Pending) { when (tx.txState.minor) { - KycRequired -> KycButton(modifier, tx, listener) + KycRequired, BalanceKycRequired -> KycButton(modifier, tx, listener) BankConfirmTransfer -> ConfirmBankButton(modifier, tx, listener) ExchangeWaitReserve -> ConfirmManualButton(modifier, tx, listener) else -> {} diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt @@ -43,6 +43,8 @@ import net.taler.wallet.transactions.TransactionMajorState.Aborted import net.taler.wallet.transactions.TransactionMajorState.Aborting import net.taler.wallet.transactions.TransactionMajorState.Failed import net.taler.wallet.transactions.TransactionMajorState.Pending +import net.taler.wallet.transactions.TransactionMinorState.BalanceKycInit +import net.taler.wallet.transactions.TransactionMinorState.BalanceKycRequired import net.taler.wallet.transactions.TransactionMinorState.BankConfirmTransfer import net.taler.wallet.transactions.TransactionMinorState.KycRequired @@ -170,7 +172,13 @@ internal class TransactionAdapter( extraInfoView.visibility = VISIBLE } - KycRequired -> { + BalanceKycInit -> { + extraInfoView.setText(R.string.transaction_preparing_kyc) + extraInfoView.setTextColor(amountColor) + extraInfoView.visibility = VISIBLE + } + + KycRequired, BalanceKycRequired -> { extraInfoView.setText(R.string.transaction_action_kyc) extraInfoView.setTextColor(amountColor) extraInfoView.visibility = VISIBLE diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionState.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionState.kt @@ -82,6 +82,12 @@ enum class TransactionMinorState { @SerialName("kyc") KycRequired, + @SerialName("balance-kyc") + BalanceKycRequired, + + @SerialName("balance-kyc-init") + BalanceKycInit, + @SerialName("exchange") Exchange, diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionStateComposable.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionStateComposable.kt @@ -45,7 +45,9 @@ import net.taler.wallet.transactions.TransactionMajorState.Expired import net.taler.wallet.transactions.TransactionMajorState.Failed import net.taler.wallet.transactions.TransactionMajorState.Pending import net.taler.wallet.transactions.TransactionMajorState.Suspended +import net.taler.wallet.transactions.TransactionMinorState.BalanceKycRequired import net.taler.wallet.transactions.TransactionMinorState.BankConfirmTransfer +import net.taler.wallet.transactions.TransactionMinorState.KycRequired import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer @Composable @@ -57,6 +59,7 @@ fun TransactionStateComposable( val context = LocalContext.current val message = when (state) { TransactionState(Pending, BankConfirmTransfer) -> stringResource(R.string.transaction_state_pending_bank) + TransactionState(Pending, KycRequired), TransactionState(Pending, BalanceKycRequired) -> stringResource(R.string.transaction_state_pending_kyc) TransactionState(Pending) -> stringResource(R.string.transaction_state_pending) TransactionState(Aborted) -> if (tx is TransactionWithdrawal && tx.withdrawalDetails is ManualTransfer) { stringResource( @@ -112,6 +115,7 @@ fun TransactionStateComposablePreview() { val modifier = Modifier.padding(vertical = 6.dp) TransactionStateComposable(modifier, state = TransactionState(Pending, BankConfirmTransfer)) + TransactionStateComposable(modifier, state = TransactionState(Pending, KycRequired)) TransactionStateComposable(modifier, state = TransactionState(Pending)) TransactionStateComposable(modifier, state = TransactionState(Aborted)) TransactionStateComposable(modifier, state = TransactionState(Aborting)) diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml @@ -132,6 +132,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="transaction_peer_push_credit">Push payment</string> <string name="transaction_peer_push_debit">Push payment</string> <string name="transaction_pending">PENDING</string> + <string name="transaction_preparing_kyc">KYC required, preparing challenge</string> <string name="transaction_refresh">Coin expiry change fee</string> <string name="transaction_refund">Refund</string> <string name="transaction_state_aborted">This transaction was aborted</string> @@ -141,6 +142,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card <string name="transaction_state_failed">This transaction has failed</string> <string name="transaction_state_pending">This transaction is pending</string> <string name="transaction_state_pending_bank">Waiting for authorization in the bank</string> + <string name="transaction_state_pending_kyc">Waiting for KYC verification</string> <string name="transaction_state_suspended">This transaction is suspended</string> <string name="transactions_abort">Abort</string> <string name="transactions_abort_dialog_message">Are you sure you want to abort this transaction? Funds still in transit might get lost.</string>