From 4fe04766fbf5328d0816f7cd862228a71690fd1c Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 6 Sep 2022 18:18:47 -0300 Subject: [wallet] implement prototype for outgoing peer transactions --- .../net/taler/wallet/transactions/Transactions.kt | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) (limited to 'wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt') 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 +} -- cgit v1.2.3