diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt b/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt index afd9a23..93636ea 100644 --- a/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/balances/BalancesFragment.kt @@ -29,11 +29,17 @@ import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL import net.taler.common.fadeIn +import net.taler.common.showError import net.taler.wallet.MainViewModel +import net.taler.wallet.balances.BalanceState.Error +import net.taler.wallet.balances.BalanceState.Loading +import net.taler.wallet.balances.BalanceState.None +import net.taler.wallet.balances.BalanceState.Success import net.taler.wallet.databinding.FragmentBalancesBinding +import net.taler.wallet.showError interface BalanceClickListener { - fun onBalanceClick(currency: String) + fun onBalanceClick(scopeInfo: ScopeInfo) } class BalancesFragment : Fragment(), @@ -48,7 +54,7 @@ class BalancesFragment : Fragment(), inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { ui = FragmentBalancesBinding.inflate(inflater, container, false) return ui.root } @@ -59,25 +65,39 @@ class BalancesFragment : Fragment(), addItemDecoration(DividerItemDecoration(context, VERTICAL)) } - model.balances.observe(viewLifecycleOwner, { + model.balanceManager.state.observe(viewLifecycleOwner) { onBalancesChanged(it) - }) + } } - private fun onBalancesChanged(balances: List<BalanceItem>) { - beginDelayedTransition(view as ViewGroup) - if (balances.isEmpty()) { - ui.mainEmptyState.visibility = VISIBLE - ui.mainList.visibility = GONE - } else { - balancesAdapter.setItems(balances) - ui.mainEmptyState.visibility = INVISIBLE - ui.mainList.fadeIn() + private fun onBalancesChanged(state: BalanceState) { + model.showProgressBar.value = false + when (state) { + is None -> {} + is Loading -> { + model.showProgressBar.value = true + } + is Success -> { + beginDelayedTransition(view as ViewGroup) + if (state.balances.isEmpty()) { + ui.mainEmptyState.visibility = VISIBLE + ui.mainList.visibility = GONE + } else { + balancesAdapter.setItems(state.balances) + ui.mainEmptyState.visibility = INVISIBLE + ui.mainList.fadeIn() + } + } + is Error -> if (model.devMode.value == true) { + showError(state.error) + } else { + showError(state.error.userFacingMsg) + } } } - override fun onBalanceClick(currency: String) { - model.showTransactions(currency) + override fun onBalanceClick(scopeInfo: ScopeInfo) { + model.showTransactions(scopeInfo) } } |