From d57645954dda2d478fe09dd0135183e1b3526db0 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 22 Apr 2020 15:10:08 -0300 Subject: [cashier] expose internal error messages to UI --- .../main/java/net/taler/cashier/BalanceFragment.kt | 32 ++++++++++++---------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'cashier/src/main/java/net/taler/cashier/BalanceFragment.kt') diff --git a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt index c4802ee..246cba0 100644 --- a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt +++ b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt @@ -35,11 +35,12 @@ import net.taler.cashier.withdraw.LastTransaction import net.taler.cashier.withdraw.WithdrawStatus import net.taler.common.Amount import net.taler.common.SignedAmount +import net.taler.common.exhaustive import net.taler.common.fadeIn import net.taler.common.fadeOut sealed class BalanceResult { - object Error : BalanceResult() + class Error(val msg: String) : BalanceResult() object Offline : BalanceResult() class Success(val amount: SignedAmount) : BalanceResult() } @@ -62,10 +63,7 @@ class BalanceFragment : Fragment() { onLastTransaction(lastTransaction) }) viewModel.balance.observe(viewLifecycleOwner, Observer { result -> - when (result) { - is BalanceResult.Success -> onBalanceUpdated(result.amount) - else -> onBalanceUpdated(null, result is BalanceResult.Offline) - } + onBalanceUpdated(result) }) button5.setOnClickListener { onAmountButtonPressed(5) } button10.setOnClickListener { onAmountButtonPressed(10) } @@ -121,20 +119,26 @@ class BalanceFragment : Fragment() { else -> super.onOptionsItemSelected(item) } - private fun onBalanceUpdated(amount: SignedAmount?, isOffline: Boolean = false) { + private fun onBalanceUpdated(result: BalanceResult) { val uiList = listOf( introView, button5, button10, button20, button50, amountView, currencyView, confirmWithdrawalButton ) - if (amount == null) { - balanceView.text = - getString(if (isOffline) R.string.balance_offline else R.string.balance_error) - uiList.forEach { it.fadeOut() } - } else { - balanceView.text = amount.toString() - uiList.forEach { it.fadeIn() } - } + when (result) { + is BalanceResult.Success -> { + balanceView.text = result.amount.toString() + uiList.forEach { it.fadeIn() } + } + is BalanceResult.Error -> { + balanceView.text = getString(R.string.balance_error, result.msg) + uiList.forEach { it.fadeOut() } + } + BalanceResult.Offline -> { + balanceView.text = getString(R.string.balance_offline) + uiList.forEach { it.fadeOut() } + } + }.exhaustive progressBar.fadeOut() } -- cgit v1.2.3