[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] 04/04: [wallet] upgrade payment flow to new API
From: |
gnunet |
Subject: |
[taler-taler-android] 04/04: [wallet] upgrade payment flow to new API |
Date: |
Thu, 30 Jul 2020 22:12:24 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository taler-android.
commit 3ceaeb30c2eb1566f5580923c4965d7c23bd7806
Author: Torsten Grote <t@grobox.de>
AuthorDate: Thu Jul 30 17:05:05 2020 -0300
[wallet] upgrade payment flow to new API
---
.../src/main/java/net/taler/wallet/payment/PaymentManager.kt | 11 +++++++----
.../main/java/net/taler/wallet/payment/PaymentResponses.kt | 12 +++++++++++-
.../java/net/taler/wallet/payment/PromptPaymentFragment.kt | 7 ++++---
wallet/src/main/res/layout/payment_bottom_bar.xml | 1 -
4 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
index c6351ee..2427afb 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
@@ -26,6 +26,8 @@ import net.taler.common.Amount
import net.taler.common.ContractTerms
import net.taler.wallet.TAG
import net.taler.wallet.backend.WalletBackendApi
+import net.taler.wallet.payment.PayStatus.AlreadyPaid
+import net.taler.wallet.payment.PayStatus.InsufficientBalance
import net.taler.wallet.payment.PreparePayResponse.AlreadyConfirmedResponse
import net.taler.wallet.payment.PreparePayResponse.InsufficientBalanceResponse
import net.taler.wallet.payment.PreparePayResponse.PaymentPossibleResponse
@@ -40,7 +42,8 @@ sealed class PayStatus {
data class Prepared(
val contractTerms: ContractTerms,
val proposalId: String,
- val totalFees: Amount
+ val amountRaw: Amount,
+ val amountEffective: Amount
) : PayStatus()
data class InsufficientBalance(val contractTerms: ContractTerms) :
PayStatus()
@@ -74,9 +77,9 @@ class PaymentManager(
val response: PreparePayResponse =
mapper.readValue(result.toString())
Log.e(TAG, "PreparePayResponse $response")
mPayStatus.value = when (response) {
- is PaymentPossibleResponse -> TODO()
- is InsufficientBalanceResponse -> TODO()
- is AlreadyConfirmedResponse -> TODO()
+ is PaymentPossibleResponse -> response.toPayStatusPrepared()
+ is InsufficientBalanceResponse ->
InsufficientBalance(response.contractTerms)
+ is AlreadyConfirmedResponse -> AlreadyPaid
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
index d2f8e6c..1ff8867 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt
@@ -19,6 +19,7 @@ package net.taler.wallet.payment
import com.fasterxml.jackson.annotation.JsonTypeInfo
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME
import com.fasterxml.jackson.annotation.JsonTypeName
+import net.taler.common.Amount
import net.taler.common.ContractTerms
@JsonTypeInfo(use = NAME, property = "status")
@@ -26,8 +27,17 @@ sealed class PreparePayResponse(open val proposalId: String)
{
@JsonTypeName("payment-possible")
data class PaymentPossibleResponse(
override val proposalId: String,
+ val amountRaw: Amount,
+ val amountEffective: Amount,
val contractTerms: ContractTerms
- ) : PreparePayResponse(proposalId)
+ ) : PreparePayResponse(proposalId) {
+ fun toPayStatusPrepared() = PayStatus.Prepared(
+ contractTerms = contractTerms,
+ proposalId = proposalId,
+ amountRaw = amountRaw,
+ amountEffective = amountEffective
+ )
+ }
@JsonTypeName("insufficient-balance")
data class InsufficientBalanceResponse(
diff --git
a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
index 6f806b7..ce2b6f7 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
@@ -95,7 +95,8 @@ class PromptPaymentFragment : Fragment(),
ProductImageClickListener {
when (payStatus) {
is PayStatus.Prepared -> {
showLoading(false)
- showOrder(payStatus.contractTerms, payStatus.totalFees)
+ val fees = payStatus.amountEffective - payStatus.amountRaw
+ showOrder(payStatus.contractTerms, fees)
confirmButton.isEnabled = true
confirmButton.setOnClickListener {
model.showProgressBar.value = true
@@ -109,7 +110,7 @@ class PromptPaymentFragment : Fragment(),
ProductImageClickListener {
}
is PayStatus.InsufficientBalance -> {
showLoading(false)
- showOrder(payStatus.contractTerms, null)
+ showOrder(payStatus.contractTerms)
errorView.setText(R.string.payment_balance_insufficient)
errorView.fadeIn()
}
@@ -141,7 +142,7 @@ class PromptPaymentFragment : Fragment(),
ProductImageClickListener {
}
}
- private fun showOrder(contractTerms: ContractTerms, totalFees: Amount?) {
+ private fun showOrder(contractTerms: ContractTerms, totalFees: Amount? =
null) {
orderView.text = contractTerms.summary
adapter.setItems(contractTerms.products)
if (contractTerms.products.size == 1)
paymentManager.toggleDetailsShown()
diff --git a/wallet/src/main/res/layout/payment_bottom_bar.xml
b/wallet/src/main/res/layout/payment_bottom_bar.xml
index a19ac4e..dbc60ae 100644
--- a/wallet/src/main/res/layout/payment_bottom_bar.xml
+++ b/wallet/src/main/res/layout/payment_bottom_bar.xml
@@ -32,7 +32,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
- android:layout_marginBottom="27dp"
android:text="@string/payment_label_amount_total"
android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@+id/confirmButton"
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.