diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-03-07 22:51:38 -0600 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2023-03-08 14:47:17 -0300 |
commit | 34954e4c0c730910ee45dec85a64117aa57023c2 (patch) | |
tree | 885046ddc0017e60287fc067998a638c4e57c8c1 | |
parent | 1505aa4aa760e2921888696b7a1bd153576b790a (diff) | |
download | taler-android-34954e4c0c730910ee45dec85a64117aa57023c2.tar.gz taler-android-34954e4c0c730910ee45dec85a64117aa57023c2.tar.bz2 taler-android-34954e4c0c730910ee45dec85a64117aa57023c2.zip |
[wallet] Replace pending with extendedStatus
10 files changed, 64 insertions, 26 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt index f6f411a..a06fed4 100644 --- a/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt +++ b/wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt @@ -37,6 +37,7 @@ import net.taler.common.toAbsoluteTime import net.taler.wallet.R import net.taler.wallet.transactions.AmountType import net.taler.wallet.transactions.DeleteTransactionComposable +import net.taler.wallet.transactions.ExtendedStatus.Pending import net.taler.wallet.transactions.TransactionAmountComposable import net.taler.wallet.transactions.TransactionDeposit @@ -83,7 +84,7 @@ fun TransactionDepositComposablePreview() { val t = TransactionDeposit( transactionId = "transactionId", timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + extendedStatus = Pending, depositGroupId = "fooBar", amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337), amountEffective = Amount.fromDouble("TESTKUDOS", 42.23), diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt index c64f0d3..0687b0f 100644 --- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt +++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt @@ -31,6 +31,7 @@ import net.taler.common.Timestamp import net.taler.wallet.R import net.taler.wallet.compose.QrCodeUriComposable import net.taler.wallet.transactions.AmountType +import net.taler.wallet.transactions.ExtendedStatus.Pending import net.taler.wallet.transactions.PeerInfoShort import net.taler.wallet.transactions.TransactionAmountComposable import net.taler.wallet.transactions.TransactionInfoComposable @@ -61,7 +62,7 @@ fun ColumnScope.TransactionPeerPullCreditComposable(t: TransactionPeerPullCredit label = stringResource(id = R.string.send_peer_purpose), info = t.info.summary ?: "", ) - if (t.pending) { + if (t.extendedStatus == Pending) { QrCodeUriComposable( talerUri = t.talerUri, clipBoardLabel = "Invoice", @@ -82,7 +83,7 @@ fun TransactionPeerPullCreditPreview() { val t = TransactionPeerPullCredit( transactionId = "transactionId", timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + extendedStatus = Pending, exchangeBaseUrl = "https://exchange.example.org/", amountRaw = Amount.fromDouble("TESTKUDOS", 42.23), amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337), diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt index ccf0324..3325776 100644 --- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt +++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt @@ -24,6 +24,7 @@ import net.taler.common.Amount import net.taler.common.Timestamp import net.taler.wallet.R import net.taler.wallet.transactions.AmountType +import net.taler.wallet.transactions.ExtendedStatus.Pending import net.taler.wallet.transactions.PeerInfoShort import net.taler.wallet.transactions.TransactionAmountComposable import net.taler.wallet.transactions.TransactionInfoComposable @@ -62,7 +63,7 @@ fun TransactionPeerPullDebitPreview() { val t = TransactionPeerPullDebit( transactionId = "transactionId", timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + extendedStatus = Pending, exchangeBaseUrl = "https://exchange.example.org/", amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337), amountEffective = Amount.fromDouble("TESTKUDOS", 42.23), diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt index 897d3fb..e6fd002 100644 --- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt +++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt @@ -24,6 +24,7 @@ import net.taler.common.Amount import net.taler.common.Timestamp import net.taler.wallet.R import net.taler.wallet.transactions.AmountType +import net.taler.wallet.transactions.ExtendedStatus.Pending import net.taler.wallet.transactions.PeerInfoShort import net.taler.wallet.transactions.TransactionAmountComposable import net.taler.wallet.transactions.TransactionInfoComposable @@ -62,7 +63,7 @@ fun TransactionPeerPushCreditPreview() { val t = TransactionPeerPushCredit( transactionId = "transactionId", timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + extendedStatus = Pending, exchangeBaseUrl = "https://exchange.example.org/", amountRaw = Amount.fromDouble("TESTKUDOS", 42.23), amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337), diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt index 3e74d43..56b3626 100644 --- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt +++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt @@ -31,6 +31,7 @@ import net.taler.common.Timestamp import net.taler.wallet.R import net.taler.wallet.compose.QrCodeUriComposable import net.taler.wallet.transactions.AmountType +import net.taler.wallet.transactions.ExtendedStatus.Pending import net.taler.wallet.transactions.PeerInfoShort import net.taler.wallet.transactions.TransactionAmountComposable import net.taler.wallet.transactions.TransactionInfoComposable @@ -80,7 +81,7 @@ fun TransactionPeerPushDebitPreview() { val t = TransactionPeerPushDebit( transactionId = "transactionId", timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + extendedStatus = Pending, exchangeBaseUrl = "https://exchange.example.org/", amountRaw = Amount.fromDouble("TESTKUDOS", 42.1337), amountEffective = Amount.fromDouble("TESTKUDOS", 42.23), 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 e65a751..c2f7122 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt @@ -37,6 +37,7 @@ 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.ExtendedStatus.Pending import net.taler.wallet.transactions.TransactionAdapter.TransactionViewHolder internal class TransactionAdapter( @@ -101,7 +102,7 @@ internal class TransactionAdapter( bindActionButton(transaction) time.text = transaction.timestamp.ms.toRelativeTime(context) bindAmount(transaction) - pendingView.visibility = if (transaction.pending) VISIBLE else GONE + pendingView.visibility = if (transaction.extendedStatus == Pending) VISIBLE else GONE val bgColor = getColor(context, if (selected) R.color.selectedBackground else android.R.color.transparent) @@ -150,11 +151,11 @@ internal class TransactionAdapter( when (transaction.amountType) { AmountType.Positive -> { amount.text = context.getString(R.string.amount_positive, amountStr) - amount.setTextColor(if (transaction.pending) amountColor else green) + amount.setTextColor(if (transaction.extendedStatus == Pending) amountColor else green) } AmountType.Negative -> { amount.text = context.getString(R.string.amount_negative, amountStr) - amount.setTextColor(if (transaction.pending) amountColor else red) + amount.setTextColor(if (transaction.extendedStatus == Pending) amountColor else red) } AmountType.Neutral -> { amount.text = amountStr diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt index 8be3fb5..f6f25cc 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt @@ -25,6 +25,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import net.taler.wallet.TAG import net.taler.wallet.backend.WalletBackendApi +import net.taler.wallet.transactions.ExtendedStatus.Pending import java.util.LinkedList sealed class TransactionsResult { @@ -75,7 +76,7 @@ class TransactionManager( val transactions = LinkedList(result.transactions) // TODO remove when fixed in wallet-core val comparator = compareBy<Transaction>( - { it.pending }, + { it.extendedStatus == Pending }, { it.timestamp.ms }, { it.transactionId } ) diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt index 91af805..02b522f 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt @@ -42,6 +42,7 @@ import net.taler.common.Timestamp import net.taler.common.toAbsoluteTime import net.taler.wallet.R import net.taler.wallet.compose.TalerSurface +import net.taler.wallet.transactions.ExtendedStatus.Pending class TransactionTipFragment : TransactionDetailFragment() { @@ -109,7 +110,7 @@ fun TransactionTipPreview() { val t = TransactionTip( transactionId = "transactionId", timestamp = Timestamp.fromMillis(System.currentTimeMillis() - 360 * 60 * 1000), - pending = true, + extendedStatus = Pending, merchantBaseUrl = "https://merchant.example.org/", amountRaw = Amount.fromDouble("TESTKUDOS", 42.23), amountEffective = Amount.fromDouble("TESTKUDOS", 42.1337), 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 2778126..9a43efa 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt @@ -31,6 +31,7 @@ import net.taler.wallet.cleanExchange import net.taler.wallet.databinding.FragmentTransactionWithdrawalBinding import net.taler.wallet.handleKyc import net.taler.wallet.launchInAppBrowser +import net.taler.wallet.transactions.ExtendedStatus.Pending import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi import net.taler.wallet.withdraw.createManualTransferRequired @@ -65,7 +66,7 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() { val fee = t.amountRaw - t.amountEffective ui.feeView.text = getString(R.string.amount_negative, fee.toString()) ui.exchangeView.text = cleanExchange(t.exchangeBaseUrl) - if (t.pending) { + if (t.extendedStatus == Pending) { ui.deleteButton.setIconResource(R.drawable.ic_cancel) ui.deleteButton.setText(R.string.cancel) } @@ -75,7 +76,7 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() { } } - private val isPending get() = transactionManager.selectedTransaction.value?.pending == true + private val isPending get() = transactionManager.selectedTransaction.value?.extendedStatus == Pending override val deleteDialogTitle: Int get() = if (isPending) R.string.cancel else super.deleteDialogTitle @@ -86,7 +87,7 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() { get() = if (isPending) R.string.ok else super.deleteDialogButton private fun setupConfirmWithdrawalButton(t: TransactionWithdrawal) { - if (t.pending && !t.confirmed) { + if (t.extendedStatus == Pending && !t.confirmed) { if (t.withdrawalDetails is TalerBankIntegrationApi && t.withdrawalDetails.bankConfirmationUrl != null ) { 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 740aab6..68d0bc4 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt @@ -40,7 +40,7 @@ data class Transactions(val transactions: List<Transaction>) sealed class Transaction { abstract val transactionId: String abstract val timestamp: Timestamp - abstract val pending: Boolean + abstract val extendedStatus: ExtendedStatus abstract val error: TalerErrorInfo? abstract val amountRaw: Amount abstract val amountEffective: Amount @@ -59,6 +59,35 @@ sealed class Transaction { abstract val generalTitleRes: Int } +enum class ExtendedStatus { + @SerialName("pending") + Pending, + + @SerialName("done") + Done, + + @SerialName("aborting") + Aborting, + + @SerialName("aborted") + Aborted, + + @SerialName("suspended") + Suspended, + + @SerialName("failed") + Failed, + + @SerialName("kyc-required") + KycRequired, + + @SerialName("aml-required") + AmlRequired, + + @SerialName("deleted") + Deleted; +} + sealed class AmountType { object Positive : AmountType() object Negative : AmountType() @@ -70,7 +99,7 @@ sealed class AmountType { class TransactionWithdrawal( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val exchangeBaseUrl: String, val withdrawalDetails: WithdrawalDetails, override val error: TalerErrorInfo? = null, @@ -86,7 +115,7 @@ class TransactionWithdrawal( override fun getTitle(context: Context) = cleanExchange(exchangeBaseUrl) override val generalTitleRes = R.string.withdraw_title val confirmed: Boolean - get() = !pending && ( + get() = extendedStatus != ExtendedStatus.Pending && ( (withdrawalDetails is TalerBankIntegrationApi && withdrawalDetails.confirmed) || withdrawalDetails is ManualTransfer ) @@ -128,7 +157,7 @@ sealed class WithdrawalDetails { class TransactionPayment( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val info: TransactionInfo, val status: PaymentStatus, override val error: TalerErrorInfo? = null, @@ -183,7 +212,7 @@ enum class PaymentStatus { class TransactionRefund( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val refundedTransactionId: String, val info: TransactionInfo, /** @@ -211,7 +240,7 @@ class TransactionRefund( class TransactionTip( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val merchantBaseUrl: String, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, @@ -234,7 +263,7 @@ class TransactionTip( class TransactionRefresh( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val exchangeBaseUrl: String, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, @@ -257,7 +286,7 @@ class TransactionRefresh( class TransactionDeposit( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, override val amountEffective: Amount, @@ -290,7 +319,7 @@ data class PeerInfoShort( class TransactionPeerPullDebit( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val exchangeBaseUrl: String, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, @@ -317,7 +346,7 @@ class TransactionPeerPullDebit( class TransactionPeerPullCredit( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val exchangeBaseUrl: String, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, @@ -345,7 +374,7 @@ class TransactionPeerPullCredit( class TransactionPeerPushDebit( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val exchangeBaseUrl: String, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, @@ -374,7 +403,7 @@ class TransactionPeerPushDebit( class TransactionPeerPushCredit( override val transactionId: String, override val timestamp: Timestamp, - override val pending: Boolean, + override val extendedStatus: ExtendedStatus, val exchangeBaseUrl: String, override val error: TalerErrorInfo? = null, override val amountRaw: Amount, |