summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-05-15 15:34:24 -0600
committerTorsten Grote <t@grobox.de>2023-07-11 10:31:26 -0300
commit58f5dc13d51eef09463e215af0ac526216531074 (patch)
treeb8685fc4f3fee8888d6e7923ac7c6f9c59574eea /wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
parent255094c5432244ca214055cc9406a31d5b561b5f (diff)
downloadtaler-android-58f5dc13d51eef09463e215af0ac526216531074.tar.gz
taler-android-58f5dc13d51eef09463e215af0ac526216531074.tar.bz2
taler-android-58f5dc13d51eef09463e215af0ac526216531074.zip
[wallet] Implemented DD37 with the new txActions field
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt62
1 files changed, 49 insertions, 13 deletions
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 6e00b4f..cb917db 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
@@ -42,6 +42,8 @@ import net.taler.wallet.TAG
import net.taler.wallet.backend.TalerErrorCode
import net.taler.wallet.backend.TalerErrorInfo
import net.taler.wallet.cleanExchange
+import net.taler.wallet.transactions.TransactionMajorState.Failed
+import net.taler.wallet.transactions.TransactionMajorState.Pending
import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer
import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi
import java.util.UUID
@@ -97,7 +99,8 @@ class TransactionSerializer : KSerializer<Transaction> {
sealed class Transaction {
abstract val transactionId: String
abstract val timestamp: Timestamp
- abstract val extendedStatus: ExtendedStatus
+ abstract val txState: TransactionState
+ abstract val txActions: List<TransactionAction>
abstract val error: TalerErrorInfo?
abstract val amountRaw: Amount
abstract val amountEffective: Amount
@@ -140,6 +143,28 @@ enum class ExtendedStatus {
Deleted;
}
+@Serializable
+enum class TransactionAction {
+ // Common States
+ @SerialName("delete")
+ Delete,
+
+ @SerialName("suspend")
+ Suspend,
+
+ @SerialName("resume")
+ Resume,
+
+ @SerialName("abort")
+ Abort,
+
+ @SerialName("fail")
+ Fail,
+
+ @SerialName("retry")
+ Retry,
+}
+
sealed class AmountType {
object Positive : AmountType()
object Negative : AmountType()
@@ -151,7 +176,8 @@ sealed class AmountType {
class TransactionWithdrawal(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val exchangeBaseUrl: String,
val withdrawalDetails: WithdrawalDetails,
override val error: TalerErrorInfo? = null,
@@ -167,7 +193,7 @@ class TransactionWithdrawal(
override fun getTitle(context: Context) = cleanExchange(exchangeBaseUrl)
override val generalTitleRes = R.string.withdraw_title
val confirmed: Boolean
- get() = extendedStatus != ExtendedStatus.Pending && (
+ get() = txState.major != Pending && (
(withdrawalDetails is TalerBankIntegrationApi && withdrawalDetails.confirmed) ||
withdrawalDetails is ManualTransfer
)
@@ -209,7 +235,8 @@ sealed class WithdrawalDetails {
class TransactionPayment(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val info: TransactionInfo,
val status: PaymentStatus,
override val error: TalerErrorInfo? = null,
@@ -264,7 +291,8 @@ enum class PaymentStatus {
class TransactionRefund(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val refundedTransactionId: String,
val info: TransactionInfo,
/**
@@ -292,7 +320,8 @@ class TransactionRefund(
class TransactionTip(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val merchantBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
@@ -315,7 +344,8 @@ class TransactionTip(
class TransactionRefresh(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
override val amountEffective: Amount,
@@ -337,7 +367,8 @@ class TransactionRefresh(
class TransactionDeposit(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
override val amountEffective: Amount,
@@ -370,7 +401,8 @@ data class PeerInfoShort(
class TransactionPeerPullDebit(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val exchangeBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
@@ -397,7 +429,8 @@ class TransactionPeerPullDebit(
class TransactionPeerPullCredit(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val exchangeBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
@@ -425,7 +458,8 @@ class TransactionPeerPullCredit(
class TransactionPeerPushDebit(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val exchangeBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
@@ -454,7 +488,8 @@ class TransactionPeerPushDebit(
class TransactionPeerPushCredit(
override val transactionId: String,
override val timestamp: Timestamp,
- override val extendedStatus: ExtendedStatus,
+ override val txState: TransactionState,
+ override val txActions: List<TransactionAction>,
val exchangeBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
@@ -481,7 +516,8 @@ class DummyTransaction(
override val timestamp: Timestamp,
override val error: TalerErrorInfo,
) : Transaction() {
- override val extendedStatus: ExtendedStatus = ExtendedStatus.Failed
+ override val txState: TransactionState = TransactionState(Failed)
+ override val txActions: List<TransactionAction> = listOf(TransactionAction.Delete)
override val amountRaw: Amount = Amount.zero("TESTKUDOS")
override val amountEffective: Amount = Amount.zero("TESTKUDOS")
override val icon: Int = R.drawable.ic_bug_report