summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-06-27 10:46:40 -0600
committerIván Ávalos <avalos@disroot.org>2023-06-27 10:49:11 -0600
commitaf74c843cd05ecb56f331825d316c43b9ae54618 (patch)
treee405abbf11a20df3e9518efcf2c99d9f66582717
parentd2248c1bd5628ffbb1ee98f570fbed4c03eff930 (diff)
downloadtaler-android-dev/ivan-avalos/errors.tar.gz
taler-android-dev/ivan-avalos/errors.tar.bz2
taler-android-dev/ivan-avalos/errors.zip
[wallet] Handle add and list exchange errors separatelydev/ivan-avalos/errors
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt14
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt14
-rw-r--r--wallet/src/main/res/values/strings.xml1
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<List<ExchangeItem>>()
val exchanges: LiveData<List<ExchangeItem>> get() = list()
- private val mAddError = MutableLiveData<Event<Boolean>>()
- val addError: LiveData<Event<Boolean>> = mAddError
+ private val mAddError = MutableLiveData<Event<TalerErrorInfo>>()
+ val addError: LiveData<Event<TalerErrorInfo>> = mAddError
- private val mErrorEvent = MutableLiveData<Event<TalerErrorInfo>>()
- val errorEvent: LiveData<Event<TalerErrorInfo>> = mErrorEvent
+ private val mListError = MutableLiveData<Event<TalerErrorInfo>>()
+ val listError: LiveData<Event<TalerErrorInfo>> = 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
<string name="exchange_list_add">Add exchange</string>
<string name="exchange_add_url">Enter address of exchange</string>
<string name="exchange_add_error">Could not add exchange</string>
+ <string name="exchange_list_error">Could not list exchanges</string>
<string name="exchange_menu_manual_withdraw">Withdraw</string>
<string name="exchange_fee_withdrawal_fee_label">Withdrawal Fee:</string>