summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-03-07 22:51:38 -0600
committerTorsten Grote <t@grobox.de>2023-03-08 14:47:17 -0300
commit34954e4c0c730910ee45dec85a64117aa57023c2 (patch)
tree885046ddc0017e60287fc067998a638c4e57c8c1
parent1505aa4aa760e2921888696b7a1bd153576b790a (diff)
downloadtaler-android-34954e4c0c730910ee45dec85a64117aa57023c2.tar.gz
taler-android-34954e4c0c730910ee45dec85a64117aa57023c2.tar.bz2
taler-android-34954e4c0c730910ee45dec85a64117aa57023c2.zip
[wallet] Replace pending with extendedStatus
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/TransactionDepositComposable.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt5
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullDebit.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushCredit.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt7
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionTipFragment.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt7
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt53
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,