taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit b23458e8d3dcdb3b4c5ef2e3ad1a00ee2adff621
parent c4900c03c11e8b6e94cf948639d77345e2b34076
Author: Iván Ávalos <avalos@disroot.org>
Date:   Sun, 15 Sep 2024 13:58:24 +0200

[wallet] fix crash on withdrawal

bug 0009157

Diffstat:
Mwallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt | 7+------
Mwallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt | 12+++++++-----
2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt @@ -41,7 +41,6 @@ import net.taler.wallet.showError class IncomingPushPaymentFragment : Fragment() { private val model: MainViewModel by activityViewModels() private val peerManager get() = model.peerManager - private val exchangeManager get() = model.exchangeManager override fun onCreateView( inflater: LayoutInflater, @@ -92,10 +91,6 @@ class IncomingPushPaymentFragment : Fragment() { override fun onResume() { super.onResume() - // FIXME: not sure that this is the best approach! - exchangeManager.exchanges.observe(viewLifecycleOwner) { - // detect ToS acceptation - peerManager.refreshPeerPushCreditTos() - } + peerManager.refreshPeerPushCreditTos() } } diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt @@ -100,6 +100,7 @@ class PromptWithdrawFragment: Fragment() { private val selectExchangeDialog = SelectExchangeDialogFragment() private var startup: Boolean = true + private var navigating: Boolean = false override fun onCreateView( inflater: LayoutInflater, @@ -206,6 +207,10 @@ class PromptWithdrawFragment: Fragment() { Success -> lifecycleScope.launch { Snackbar.make(requireView(), R.string.withdraw_initiated, LENGTH_LONG).show() status.transactionId?.let { + if (!navigating) { + navigating = true + } else return@let + if (transactionManager.selectTransaction(it)) { findNavController().navigate(R.id.action_promptWithdraw_to_nav_transactions_detail_withdrawal) } else { @@ -227,11 +232,8 @@ class PromptWithdrawFragment: Fragment() { override fun onResume() { super.onResume() - // FIXME: not sure this is an ultra reliable approach! - exchangeManager.exchanges.observe(viewLifecycleOwner) { - // detect ToS acceptation - withdrawManager.refreshTosStatus() - } + // detect ToS acceptation + withdrawManager.refreshTosStatus() } private fun selectExchange() {