From 615b7da5ee39997e8a19b5f9ac004f06ab421779 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Tue, 27 Jun 2023 10:46:40 -0600 Subject: [wallet] Handle add and list exchange errors separately --- .../net/taler/wallet/exchanges/ExchangeListFragment.kt | 14 +++++++++++--- .../java/net/taler/wallet/exchanges/ExchangeManager.kt | 14 ++++++-------- wallet/src/main/res/values/strings.xml | 1 + 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt index 7e1b7cc..439ec2f 100644 --- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt @@ -69,13 +69,17 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener { exchangeManager.exchanges.observe(viewLifecycleOwner) { exchanges -> onExchangeUpdate(exchanges) } - exchangeManager.errorEvent.observe(viewLifecycleOwner, EventObserver { error -> + exchangeManager.addError.observe(viewLifecycleOwner, EventObserver { error -> + onAddExchangeFailed() if (model.devMode.value == true) { showError(error) } }) - exchangeManager.addError.observe(viewLifecycleOwner, EventObserver { error -> - if (error) onAddExchangeFailed() + exchangeManager.listError.observe(viewLifecycleOwner, EventObserver { error -> + onListExchangeFailed() + if (model.devMode.value == true) { + showError(error) + } }) } @@ -94,6 +98,10 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener { Toast.makeText(requireContext(), R.string.exchange_add_error, LENGTH_LONG).show() } + private fun onListExchangeFailed() { + Toast.makeText(requireContext(), R.string.exchange_list_error, LENGTH_LONG).show() + } + override fun onExchangeSelected(item: ExchangeItem) { throw AssertionError("must not get triggered here") } diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt index a97e188..2c92967 100644 --- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt +++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt @@ -47,11 +47,11 @@ class ExchangeManager( private val mExchanges = MutableLiveData>() val exchanges: LiveData> get() = list() - private val mAddError = MutableLiveData>() - val addError: LiveData> = mAddError + private val mAddError = MutableLiveData>() + val addError: LiveData> = mAddError - private val mErrorEvent = MutableLiveData>() - val errorEvent: LiveData> = mErrorEvent + private val mListError = MutableLiveData>() + val listError: LiveData> = mListError var withdrawalExchange: ExchangeItem? = null @@ -60,8 +60,7 @@ class ExchangeManager( scope.launch { val response = api.request("listExchanges", ExchangeListResponse.serializer()) response.onError { - mErrorEvent.value = it.toEvent() - throw AssertionError("Wallet core failed to return exchanges! ${it.userFacingMsg}") + mListError.value = it.toEvent() }.onSuccess { Log.d(TAG, "Exchange list: ${it.exchanges}") mProgress.value = false @@ -78,8 +77,7 @@ class ExchangeManager( }.onError { Log.e(TAG, "Error adding exchange: $it") mProgress.value = false - mErrorEvent.value = it.toEvent() - mAddError.value = true.toEvent() + mAddError.value = it.toEvent() }.onSuccess { mProgress.value = false Log.d(TAG, "Exchange $exchangeUrl added") diff --git a/wallet/src/main/res/values/strings.xml b/wallet/src/main/res/values/strings.xml index 70b89c5..185a723 100644 --- a/wallet/src/main/res/values/strings.xml +++ b/wallet/src/main/res/values/strings.xml @@ -207,6 +207,7 @@ GNU Taler is immune against many types of fraud, such as phishing of credit card Add exchange Enter address of exchange Could not add exchange + Could not list exchanges Withdraw Withdrawal Fee: -- cgit v1.2.3