From a6e5a8d9f210618d779d43c859234b94827bf172 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 2 Apr 2020 13:48:33 -0300 Subject: [wallet] Show withdraw summary before ToS and do one-click accept --- .../wallet/withdraw/PromptWithdrawFragment.kt | 62 +++++++++++++--------- 1 file changed, 38 insertions(+), 24 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt') 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 61aed4a..875a9c4 100644 --- a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt @@ -25,6 +25,7 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer import androidx.navigation.fragment.findNavController import kotlinx.android.synthetic.main.fragment_prompt_withdraw.* +import net.taler.common.Amount import net.taler.common.fadeIn import net.taler.common.fadeOut import net.taler.wallet.R @@ -48,34 +49,23 @@ class PromptWithdrawFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - confirmWithdrawButton.setOnClickListener { - val status = withdrawManager.withdrawStatus.value - if (status !is WithdrawStatus.ReceivedDetails) throw AssertionError() - it.fadeOut() - confirmProgressBar.fadeIn() - withdrawManager.acceptWithdrawal(status.talerWithdrawUri, status.suggestedExchange) - } - withdrawManager.withdrawStatus.observe(viewLifecycleOwner, Observer { showWithdrawStatus(it) }) } - private fun showWithdrawStatus(status: WithdrawStatus?) = when (status) { + private fun showWithdrawStatus(status: WithdrawStatus?): Any = when (status) { is WithdrawStatus.ReceivedDetails -> { - model.showProgressBar.value = false - progressBar.fadeOut() - - introView.fadeIn() - withdrawAmountView.text = status.amount.toString() - withdrawAmountView.fadeIn() - feeView.fadeIn() - - exchangeIntroView.fadeIn() - withdrawExchangeUrl.text = status.suggestedExchange - withdrawExchangeUrl.fadeIn() - - confirmWithdrawButton.isEnabled = true + showContent(status.amount, status.suggestedExchange) + confirmWithdrawButton.apply { + text = getString(R.string.withdraw_button_confirm) + setOnClickListener { + it.fadeOut() + confirmProgressBar.fadeIn() + withdrawManager.acceptWithdrawal(status.talerWithdrawUri, status.suggestedExchange) + } + isEnabled = true + } } is WithdrawStatus.Success -> { model.showProgressBar.value = false @@ -89,8 +79,14 @@ class PromptWithdrawFragment : Fragment() { model.showProgressBar.value = true } is TermsOfServiceReviewRequired -> { - model.showProgressBar.value = false - findNavController().navigate(R.id.action_promptWithdraw_to_reviewExchangeTOS) + showContent(status.amount, status.suggestedExchange) + confirmWithdrawButton.apply { + text = getString(R.string.withdraw_button_tos) + setOnClickListener { + findNavController().navigate(R.id.action_promptWithdraw_to_reviewExchangeTOS) + } + isEnabled = true + } } is WithdrawStatus.Error -> { model.showProgressBar.value = false @@ -99,4 +95,22 @@ class PromptWithdrawFragment : Fragment() { null -> model.showProgressBar.value = false } + private fun showContent(amount: Amount, exchange: String) { + model.showProgressBar.value = false + progressBar.fadeOut() + + introView.fadeIn() + withdrawAmountView.text = amount.toString() + withdrawAmountView.fadeIn() + feeView.fadeIn() + + exchangeIntroView.fadeIn() + withdrawExchangeUrl.text = exchange.let { + if (it.startsWith("https://")) it.substring(8) else it + }.trimEnd('/') + withdrawExchangeUrl.fadeIn() + + withdrawCard.fadeIn() + } + } -- cgit v1.2.3