diff options
Diffstat (limited to 'cashier/src/main/java/net/taler/cashier/BalanceFragment.kt')
-rw-r--r-- | cashier/src/main/java/net/taler/cashier/BalanceFragment.kt | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt index 002301c..4fd3143 100644 --- a/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt +++ b/cashier/src/main/java/net/taler/cashier/BalanceFragment.kt @@ -32,10 +32,10 @@ import net.taler.cashier.BalanceFragmentDirections.Companion.actionBalanceFragme import net.taler.cashier.databinding.FragmentBalanceBinding import net.taler.cashier.withdraw.LastTransaction import net.taler.cashier.withdraw.WithdrawStatus +import net.taler.common.Amount import net.taler.common.exhaustive import net.taler.common.fadeIn import net.taler.common.fadeOut -import net.taler.lib.common.Amount sealed class BalanceResult { class Error(val msg: String) : BalanceResult() @@ -54,19 +54,19 @@ class BalanceFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, - ): View? { + ): View { setHasOptionsMenu(true) ui = FragmentBalanceBinding.inflate(layoutInflater, container, false) return ui.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - withdrawManager.lastTransaction.observe(viewLifecycleOwner, { lastTransaction -> + withdrawManager.lastTransaction.observe(viewLifecycleOwner) { lastTransaction -> onLastTransaction(lastTransaction) - }) - viewModel.balance.observe(viewLifecycleOwner, { result -> + } + viewModel.balance.observe(viewLifecycleOwner) { result -> onBalanceUpdated(result) - }) + } ui.button5.setOnClickListener { onAmountButtonPressed(5) } ui.button10.setOnClickListener { onAmountButtonPressed(10) } ui.button20.setOnClickListener { onAmountButtonPressed(20) } @@ -81,9 +81,9 @@ class BalanceFragment : Fragment() { true } else false } - configManager.currency.observe(viewLifecycleOwner, { currency -> + configManager.currency.observe(viewLifecycleOwner) { currency -> ui.currencyView.text = currency - }) + } ui.confirmWithdrawalButton.setOnClickListener { onAmountConfirmed(getAmountFromView()) } } @@ -104,11 +104,13 @@ class BalanceFragment : Fragment() { } } + @Deprecated("Deprecated in Java") override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.balance, menu) super.onCreateOptionsMenu(menu, inflater) } + @Deprecated("Deprecated in Java") override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { R.id.action_reconfigure -> { findNavController().navigate(configManager.configDestination) @@ -164,13 +166,19 @@ class BalanceFragment : Fragment() { private fun onAmountConfirmed(amount: Amount) { if (amount.isZero()) { ui.amountView.error = getString(R.string.withdraw_error_zero) - } else if (!withdrawManager.hasSufficientBalance(amount)) { - ui.amountView.error = getString(R.string.withdraw_error_insufficient_balance) - } else { - ui.amountView.error = null - withdrawManager.withdraw(amount) - actionBalanceFragmentToTransactionFragment().let { - findNavController().navigate(it) + } else when (withdrawManager.hasSufficientBalance(amount)) { + true -> { + ui.amountView.error = null + withdrawManager.withdraw(amount) + actionBalanceFragmentToTransactionFragment().let { + findNavController().navigate(it) + } + } + false -> { + ui.amountView.error = getString(R.string.withdraw_error_insufficient_balance) + } + null -> { + ui.amountView.error = getString(R.string.withdraw_error_currency_mismatch) } } } |