summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-04-02 15:12:09 -0300
committerTorsten Grote <t@grobox.de>2020-04-02 15:12:09 -0300
commite52ee8f55326de402a7ad421c396eb6c81a79a68 (patch)
treeb33d5474a0bc7c73615c3e71010e678bb2f4883f
parent78dcfb7c95fd17c8ee04f4c357b1c9b0a46cb0af (diff)
downloadtaler-android-e52ee8f55326de402a7ad421c396eb6c81a79a68.tar.gz
taler-android-e52ee8f55326de402a7ad421c396eb6c81a79a68.tar.bz2
taler-android-e52ee8f55326de402a7ad421c396eb6c81a79a68.zip
[wallet] Show withdraw fee
-rw-r--r--wallet/src/main/java/net/taler/wallet/BalanceFragment.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt22
-rw-r--r--wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt16
-rw-r--r--wallet/src/main/res/layout/fragment_prompt_withdraw.xml70
-rw-r--r--wallet/src/main/res/values/strings.xml5
5 files changed, 91 insertions, 24 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt b/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
index 93ed235..d871cfb 100644
--- a/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/BalanceFragment.kt
@@ -187,7 +187,7 @@ class BalanceAdapter : Adapter<BalanceViewHolder>() {
balanceInboundAmount.visibility = VISIBLE
balanceInboundLabel.visibility = VISIBLE
balanceInboundAmount.text =
- v.context.getString(R.string.balances_inbound_amount, amountIncoming)
+ v.context.getString(R.string.amount_positive, amountIncoming)
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
index 875a9c4..ea04e24 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt
@@ -56,13 +56,16 @@ class PromptWithdrawFragment : Fragment() {
private fun showWithdrawStatus(status: WithdrawStatus?): Any = when (status) {
is WithdrawStatus.ReceivedDetails -> {
- showContent(status.amount, status.suggestedExchange)
+ showContent(status.amount, status.fee, status.suggestedExchange)
confirmWithdrawButton.apply {
text = getString(R.string.withdraw_button_confirm)
setOnClickListener {
it.fadeOut()
confirmProgressBar.fadeIn()
- withdrawManager.acceptWithdrawal(status.talerWithdrawUri, status.suggestedExchange)
+ withdrawManager.acceptWithdrawal(
+ status.talerWithdrawUri,
+ status.suggestedExchange
+ )
}
isEnabled = true
}
@@ -79,7 +82,7 @@ class PromptWithdrawFragment : Fragment() {
model.showProgressBar.value = true
}
is TermsOfServiceReviewRequired -> {
- showContent(status.amount, status.suggestedExchange)
+ showContent(status.amount, status.fee, status.suggestedExchange)
confirmWithdrawButton.apply {
text = getString(R.string.withdraw_button_tos)
setOnClickListener {
@@ -95,13 +98,20 @@ class PromptWithdrawFragment : Fragment() {
null -> model.showProgressBar.value = false
}
- private fun showContent(amount: Amount, exchange: String) {
+ private fun showContent(amount: Amount, fee: Amount, exchange: String) {
model.showProgressBar.value = false
progressBar.fadeOut()
introView.fadeIn()
- withdrawAmountView.text = amount.toString()
- withdrawAmountView.fadeIn()
+ effectiveAmountView.text = (amount - fee).toString()
+ effectiveAmountView.fadeIn()
+
+ chosenAmountLabel.fadeIn()
+ chosenAmountView.text = amount.toString()
+ chosenAmountView.fadeIn()
+
+ feeLabel.fadeIn()
+ feeView.text = getString(R.string.amount_negative, fee.toString())
feeView.fadeIn()
exchangeIntroView.fadeIn()
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
index e252627..26515a5 100644
--- a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawManager.kt
@@ -32,12 +32,14 @@ sealed class WithdrawStatus {
val tosText: String,
val tosEtag: String,
val amount: Amount,
+ val fee: Amount,
val suggestedExchange: String
) : WithdrawStatus()
data class ReceivedDetails(
val talerWithdrawUri: String,
val amount: Amount,
+ val fee: Amount,
val suggestedExchange: String
) : WithdrawStatus()
@@ -131,6 +133,10 @@ class WithdrawManager(private val walletBackendApi: WalletBackendApi) {
val ei = result.getJSONObject("exchangeWithdrawDetails")
val termsOfServiceAccepted = ei.getBoolean("termsOfServiceAccepted")
+ val withdrawFee = Amount.fromJsonObject(ei.getJSONObject("withdrawFee"))
+ val overhead = Amount.fromJsonObject(ei.getJSONObject("overhead"))
+ val fee = withdrawFee + overhead
+
if (!termsOfServiceAccepted) {
val exchange = ei.getJSONObject("exchangeInfo")
val tosText = exchange.getString("termsOfServiceText")
@@ -138,10 +144,8 @@ class WithdrawManager(private val walletBackendApi: WalletBackendApi) {
withdrawStatus.postValue(
WithdrawStatus.TermsOfServiceReviewRequired(
status.talerWithdrawUri,
- selectedExchange,
- tosText,
- tosEtag,
- amount,
+ selectedExchange, tosText, tosEtag,
+ amount, fee,
suggestedExchange
)
)
@@ -149,7 +153,7 @@ class WithdrawManager(private val walletBackendApi: WalletBackendApi) {
withdrawStatus.postValue(
ReceivedDetails(
status.talerWithdrawUri,
- amount,
+ amount, fee,
suggestedExchange
)
)
@@ -195,7 +199,7 @@ class WithdrawManager(private val walletBackendApi: WalletBackendApi) {
Log.e(TAG, "Error acceptExchangeTermsOfService ${result.toString(4)}")
return@sendRequest
}
- val status = ReceivedDetails(s.talerWithdrawUri, s.amount, s.suggestedExchange)
+ val status = ReceivedDetails(s.talerWithdrawUri, s.amount, s.fee, s.suggestedExchange)
withdrawStatus.postValue(status)
}
}
diff --git a/wallet/src/main/res/layout/fragment_prompt_withdraw.xml b/wallet/src/main/res/layout/fragment_prompt_withdraw.xml
index b03ee03..4372cba 100644
--- a/wallet/src/main/res/layout/fragment_prompt_withdraw.xml
+++ b/wallet/src/main/res/layout/fragment_prompt_withdraw.xml
@@ -31,7 +31,7 @@
android:gravity="center"
android:text="@string/withdraw_total"
android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/withdrawAmountView"
+ app:layout_constraintBottom_toTopOf="@+id/effectiveAmountView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
@@ -40,36 +40,88 @@
tools:visibility="visible" />
<TextView
- android:id="@+id/withdrawAmountView"
+ android:id="@+id/effectiveAmountView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:gravity="center"
- android:textAppearance="@style/TextAppearance.AppCompat.Headline"
+ android:textColor="@color/green"
+ android:textSize="24sp"
android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/feeView"
+ app:layout_constraintBottom_toTopOf="@+id/chosenAmountLabel"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/introView"
- tools:text="10.00 TESTKUDOS"
+ tools:text="9.8 TESTKUDOS"
tools:visibility="visible" />
<TextView
- android:id="@+id/feeView"
+ android:id="@+id/chosenAmountLabel"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="32dp"
+ android:layout_marginEnd="16dp"
+ android:gravity="center"
+ android:text="Chosen Amount"
+ android:visibility="invisible"
+ app:layout_constraintBottom_toTopOf="@+id/chosenAmountView"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/effectiveAmountView"
+ tools:visibility="visible" />
+
+ <TextView
+ android:id="@+id/chosenAmountView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:gravity="center"
+ android:textSize="20sp"
+ android:visibility="invisible"
+ app:layout_constraintBottom_toTopOf="@+id/feeLabel"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/chosenAmountLabel"
+ tools:text="10 TESTKUDOS"
+ tools:visibility="visible" />
+
+ <TextView
+ android:id="@+id/feeLabel"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="32dp"
+ android:layout_marginEnd="16dp"
+ android:gravity="center"
android:text="@string/withdraw_fees"
android:visibility="invisible"
- app:layout_constraintBottom_toTopOf="@+id/exchangeIntroView"
+ app:layout_constraintBottom_toTopOf="@+id/feeView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/withdrawAmountView"
+ app:layout_constraintTop_toBottomOf="@+id/chosenAmountView"
+ tools:visibility="visible" />
+
+ <TextView
+ android:id="@+id/feeView"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="16dp"
+ android:gravity="center"
+ android:textColor="@color/red"
+ android:textSize="20sp"
+ android:visibility="invisible"
+ app:layout_constraintBottom_toTopOf="@+id/exchangeIntroView"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/feeLabel"
+ tools:text="-0.2 TESTKUDOS"
tools:visibility="visible" />
<TextView
@@ -111,7 +163,7 @@
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- app:layout_constraintBottom_toTopOf="@+id/withdrawCard"
+ app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml
index 8cd2dd8..bcd173f 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -39,7 +39,8 @@
<string name="aiddescription">my aid</string>
<string name="balances_title">Balances</string>
- <string name="balances_inbound_amount">+%s</string>
+ <string name="amount_positive">+%s</string>
+ <string name="amount_negative">-%s</string>
<string name="balances_inbound_label">inbound</string>
<string name="balances_empty_state">There is no digital cash in your wallet.\n\nYou can get test money from the demo bank:\n\nhttps://bank.demo.taler.net</string>
@@ -80,7 +81,7 @@
<string name="withdraw_accepted">Withdrawal accepted</string>
<string name="withdraw_success_info">The wire transfer now needs to be confirmed with the bank. Once the wire transfer is complete, the digital cash will automatically show in this wallet.</string>
<string name="withdraw_total">Withdraw</string>
- <string name="withdraw_fees">(minus exchange fees)</string>
+ <string name="withdraw_fees">Fee</string>
<string name="withdraw_exchange">Exchange</string>
<string name="withdraw_button_testkudos">Withdraw TESTKUDOS</string>
<string name="withdraw_button_confirm">Confirm Withdraw</string>