diff options
author | Torsten Grote <t@grobox.de> | 2022-09-06 18:18:47 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2022-09-06 18:18:47 -0300 |
commit | 4fe04766fbf5328d0816f7cd862228a71690fd1c (patch) | |
tree | 289e2c4fbfbd5462b0d4d2e2067227c68b840efa /wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt | |
parent | 3d3108dd40cd8d3395434905463a91b4b3a71d5a (diff) | |
download | taler-android-4fe04766fbf5328d0816f7cd862228a71690fd1c.tar.gz taler-android-4fe04766fbf5328d0816f7cd862228a71690fd1c.tar.bz2 taler-android-4fe04766fbf5328d0816f7cd862228a71690fd1c.zip |
[wallet] implement prototype for outgoing peer transactions
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.kt | 113 |
1 files changed, 113 insertions, 0 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 ca01501..6f72567 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt @@ -252,3 +252,116 @@ class TransactionRefresh( override val generalTitleRes = R.string.transaction_refresh } + +@Serializable +data class PeerInfoShort( + val expiration: Timestamp? = null, + val summary: String? = null, +) + +/** + * Debit because we paid someone's invoice. + */ +@Serializable +@SerialName("peer-pull-debit") +class TransactionPeerPullDebit( + override val transactionId: String, + override val timestamp: Timestamp, + override val pending: Boolean, + val exchangeBaseUrl: String, + override val error: TalerErrorInfo? = null, + override val amountRaw: Amount, + override val amountEffective: Amount, + val info: PeerInfoShort, +) : Transaction() { + override val icon = R.drawable.ic_cash_usd_outline + override val detailPageNav = R.id.nav_transactions_detail_peer + + @Transient + override val amountType = AmountType.Negative + override fun getTitle(context: Context): String { + return context.getString(R.string.transaction_peer_push_debit) + } + override val generalTitleRes = R.string.payment_title +} + +/** + * Credit because someone paid for an invoice we created. + */ +@Serializable +@SerialName("peer-pull-credit") +class TransactionPeerPullCredit( + override val transactionId: String, + override val timestamp: Timestamp, + override val pending: Boolean, + val exchangeBaseUrl: String, + override val error: TalerErrorInfo? = null, + override val amountRaw: Amount, + override val amountEffective: Amount, + val info: PeerInfoShort, + val talerUri: String, + // val completed: Boolean, maybe +) : Transaction() { + override val icon = R.drawable.transaction_withdrawal + override val detailPageNav = R.id.nav_transactions_detail_peer + + override val amountType get() = AmountType.Positive + override fun getTitle(context: Context): String { + return context.getString(R.string.transaction_peer_pull_credit) + } + override val generalTitleRes = R.string.transaction_peer_pull_credit +} + +/** + * Debit because we sent money to someone. + */ +@Serializable +@SerialName("peer-push-debit") +class TransactionPeerPushDebit( + override val transactionId: String, + override val timestamp: Timestamp, + override val pending: Boolean, + val exchangeBaseUrl: String, + override val error: TalerErrorInfo? = null, + override val amountRaw: Amount, + override val amountEffective: Amount, + val info: PeerInfoShort, + val talerUri: String, + // val completed: Boolean, definitely +) : Transaction() { + override val icon = R.drawable.ic_cash_usd_outline + override val detailPageNav = R.id.nav_transactions_detail_peer + + @Transient + override val amountType = AmountType.Negative + override fun getTitle(context: Context): String { + return context.getString(R.string.transaction_peer_push_debit) + } + override val generalTitleRes = R.string.payment_title +} + +/** + * We received money via a peer payment. + */ +@Serializable +@SerialName("peer-push-credit") +class TransactionPeerPushCredit( + override val transactionId: String, + override val timestamp: Timestamp, + override val pending: Boolean, + val exchangeBaseUrl: String, + override val error: TalerErrorInfo? = null, + override val amountRaw: Amount, + override val amountEffective: Amount, + val info: PeerInfoShort, +) : Transaction() { + override val icon = R.drawable.transaction_withdrawal + override val detailPageNav = R.id.nav_transactions_detail_peer + + @Transient + override val amountType = AmountType.Positive + override fun getTitle(context: Context): String { + return context.getString(R.string.transaction_peer_push_debit) + } + override val generalTitleRes = R.string.withdraw_title +} |