[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated (2e255f7 -> 4d2b5a6)
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated (2e255f7 -> 4d2b5a6) |
Date: |
Wed, 28 Jun 2023 14:07:39 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a change to branch master
in repository taler-android.
from 2e255f7 [wallet] rename InitiatePeerPushDebitResponse
new 43c30b4 [wallet] Show errors as JSON
new 615b7da [wallet] Handle add and list exchange errors separately
new 4d2b5a6 [wallet] small JSON error fixup
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../src/main/java/net/taler/wallet/MainActivity.kt | 6 ++++-
.../main/java/net/taler/wallet/MainViewModel.kt | 2 +-
wallet/src/main/java/net/taler/wallet/Utils.kt | 27 +++++++++++++++++++++-
.../net/taler/wallet/deposit/DepositFragment.kt | 7 +++++-
.../net/taler/wallet/deposit/DepositManager.kt | 6 ++---
.../java/net/taler/wallet/deposit/DepositState.kt | 3 ++-
.../wallet/deposit/MakeBitcoinDepositComposable.kt | 2 +-
.../taler/wallet/deposit/MakeDepositComposable.kt | 2 +-
.../taler/wallet/exchanges/ExchangeListFragment.kt | 16 ++++++++++++-
.../net/taler/wallet/exchanges/ExchangeManager.kt | 15 ++++++++----
.../net/taler/wallet/payment/PaymentManager.kt | 4 ++--
.../taler/wallet/payment/PromptPaymentFragment.kt | 6 ++++-
.../wallet/peer/IncomingPullPaymentFragment.kt | 3 +++
.../wallet/peer/IncomingPushPaymentFragment.kt | 3 +++
.../net/taler/wallet/peer/OutgoingPullFragment.kt | 13 +++++++++++
.../net/taler/wallet/peer/OutgoingPushFragment.kt | 13 +++++++++++
.../java/net/taler/wallet/refund/RefundManager.kt | 5 ++--
.../wallet/transactions/TransactionManager.kt | 5 ++--
.../wallet/transactions/TransactionsFragment.kt | 2 +-
wallet/src/main/res/values/strings.xml | 1 +
20 files changed, 117 insertions(+), 24 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index bf95475..e0c2419 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -295,7 +295,11 @@ class MainActivity : AppCompatActivity(),
OnNavigationItemSelectedListener,
model.showProgressBar.value = false
when (status) {
is RefundStatus.Error -> {
- showError(R.string.refund_error, status.msg)
+ if (model.devMode.value == true) {
+ showError(status.error)
+ } else {
+ showError(R.string.refund_error,
status.error.userFacingMsg)
+ }
}
is RefundStatus.Success -> {
val amount = status.response.amountRefundGranted
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index 2ad6f6b..e8b9d02 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -34,6 +34,7 @@ import net.taler.common.toEvent
import net.taler.wallet.accounts.AccountManager
import net.taler.wallet.backend.NotificationPayload
import net.taler.wallet.backend.NotificationReceiver
+import net.taler.wallet.backend.TalerErrorInfo
import net.taler.wallet.backend.VersionReceiver
import net.taler.wallet.backend.WalletBackendApi
import net.taler.wallet.backend.WalletCoreVersion
@@ -121,7 +122,6 @@ class MainViewModel(
val response = api.request("getBalances", BalanceResponse.serializer())
showProgressBar.value = false
response.onError {
- // TODO expose in UI
Log.e(TAG, "Error retrieving balances: $it")
}
response.onSuccess {
diff --git a/wallet/src/main/java/net/taler/wallet/Utils.kt
b/wallet/src/main/java/net/taler/wallet/Utils.kt
index 435aa96..d1cdf8c 100644
--- a/wallet/src/main/java/net/taler/wallet/Utils.kt
+++ b/wallet/src/main/java/net/taler/wallet/Utils.kt
@@ -32,8 +32,13 @@ import android.widget.Toast.LENGTH_LONG
import androidx.annotation.RequiresApi
import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.getSystemService
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
import net.taler.common.Amount
import net.taler.common.AmountParserException
+import net.taler.common.showError
import net.taler.common.startActivitySafe
import net.taler.wallet.backend.TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED
import net.taler.wallet.backend.TalerErrorInfo
@@ -124,4 +129,24 @@ fun launchInAppBrowser(context: Context, url: String) {
val intent = builder.build().intent
intent.data = Uri.parse(url)
context.startActivitySafe(intent)
-}
\ No newline at end of file
+}
+
+fun Fragment.showError(error: TalerErrorInfo) {
+ @Suppress("OPT_IN_USAGE")
+ val json = Json {
+ prettyPrint = true
+ prettyPrintIndent = " "
+ }
+ val message = json.encodeToString(error)
+ showError(message)
+}
+
+fun FragmentActivity.showError(error: TalerErrorInfo) {
+ @Suppress("OPT_IN_USAGE")
+ val json = Json {
+ prettyPrint = true
+ prettyPrintIndent = " "
+ }
+ val message = json.encodeToString(error)
+ showError(message)
+}
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
index c4b302f..d773293 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
@@ -32,6 +32,7 @@ import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
+import net.taler.wallet.showError
class DepositFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
@@ -80,7 +81,11 @@ class DepositFragment : Fragment() {
lifecycleScope.launchWhenStarted {
depositManager.depositState.collect { state ->
if (state is DepositState.Error) {
- showError(state.msg)
+ if (model.devMode.value == false) {
+ showError(state.error.userFacingMsg)
+ } else {
+ showError(state.error)
+ }
} else if (state is DepositState.Success) {
findNavController().navigate(R.id.action_nav_deposit_to_nav_main)
}
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
index 91f7ad5..35cca1c 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
@@ -58,7 +58,7 @@ class DepositManager(
put("iban", iban)
}.onError {
Log.e(TAG, "Error validateIban $it")
- mDepositState.value = DepositState.Error(it.userFacingMsg)
+ mDepositState.value = DepositState.Error(it)
}.onSuccess { response ->
if (response.valid) {
// only prepare/make deposit, if IBAN is valid
@@ -112,7 +112,7 @@ class DepositManager(
put("amount", amount.toJSONString())
}.onError {
Log.e(TAG, "Error prepareDeposit $it")
- mDepositState.value = DepositState.Error(it.userFacingMsg)
+ mDepositState.value = DepositState.Error(it)
}.onSuccess {
mDepositState.value = DepositState.FeesChecked(
totalDepositCost = it.totalDepositCost,
@@ -138,7 +138,7 @@ class DepositManager(
put("amount", amount.toJSONString())
}.onError {
Log.e(TAG, "Error createDepositGroup $it")
- mDepositState.value = DepositState.Error(it.userFacingMsg)
+ mDepositState.value = DepositState.Error(it)
}.onSuccess {
mDepositState.value = DepositState.Success
}
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositState.kt
b/wallet/src/main/java/net/taler/wallet/deposit/DepositState.kt
index a019757..168378f 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/DepositState.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositState.kt
@@ -17,6 +17,7 @@
package net.taler.wallet.deposit
import net.taler.common.Amount
+import net.taler.wallet.backend.TalerErrorInfo
sealed class DepositState {
@@ -43,6 +44,6 @@ sealed class DepositState {
object Success : DepositState()
- class Error(val msg: String) : DepositState()
+ class Error(val error: TalerErrorInfo) : DepositState()
}
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
index 4505762..d961f34 100644
---
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
@@ -123,7 +123,7 @@ fun MakeBitcoinDepositComposable(
modifier = Modifier.padding(16.dp),
fontSize = 18.sp,
color = MaterialTheme.colorScheme.error,
- text = (state as? DepositState.Error)?.msg ?: "",
+ text = (state as? DepositState.Error)?.error?.userFacingMsg ?:
"",
)
}
val focusManager = LocalFocusManager.current
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
index d47970f..d14ed96 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
@@ -200,7 +200,7 @@ fun MakeDepositComposable(
modifier = Modifier.padding(16.dp),
fontSize = 18.sp,
color = MaterialTheme.colorScheme.error,
- text = (state as? DepositState.Error)?.msg ?: "",
+ text = (state as? DepositState.Error)?.error?.userFacingMsg ?:
"",
)
}
val focusManager = LocalFocusManager.current
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 21e31f4..439ec2f 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt
@@ -33,6 +33,7 @@ import net.taler.common.fadeOut
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.databinding.FragmentExchangeListBinding
+import net.taler.wallet.showError
open class ExchangeListFragment : Fragment(), ExchangeClickListener {
@@ -69,7 +70,16 @@ open class ExchangeListFragment : Fragment(),
ExchangeClickListener {
onExchangeUpdate(exchanges)
}
exchangeManager.addError.observe(viewLifecycleOwner, EventObserver {
error ->
- if (error) onAddExchangeFailed()
+ onAddExchangeFailed()
+ if (model.devMode.value == true) {
+ showError(error)
+ }
+ })
+ exchangeManager.listError.observe(viewLifecycleOwner, EventObserver {
error ->
+ onListExchangeFailed()
+ if (model.devMode.value == true) {
+ showError(error)
+ }
})
}
@@ -88,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 4a57068..65f5c5c 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt
@@ -28,6 +28,7 @@ import kotlinx.serialization.Serializable
import net.taler.common.Event
import net.taler.common.toEvent
import net.taler.wallet.TAG
+import net.taler.wallet.backend.TalerErrorInfo
import net.taler.wallet.backend.WalletBackendApi
@Serializable
@@ -46,8 +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 mListError = MutableLiveData<Event<TalerErrorInfo>>()
+ val listError: LiveData<Event<TalerErrorInfo>> = mListError
var withdrawalExchange: ExchangeItem? = null
@@ -56,7 +60,8 @@ class ExchangeManager(
scope.launch {
val response = api.request("listExchanges",
ExchangeListResponse.serializer())
response.onError {
- throw AssertionError("Wallet core failed to return exchanges!
${it.userFacingMsg}")
+ mProgress.value = false
+ mListError.value = it.toEvent()
}.onSuccess {
Log.d(TAG, "Exchange list: ${it.exchanges}")
mProgress.value = false
@@ -71,9 +76,9 @@ class ExchangeManager(
api.request<Unit>("addExchange") {
put("exchangeBaseUrl", exchangeUrl)
}.onError {
- mProgress.value = false
Log.e(TAG, "Error adding exchange: $it")
- mAddError.value = true.toEvent()
+ mProgress.value = false
+ mAddError.value = it.toEvent()
}.onSuccess {
mProgress.value = false
Log.d(TAG, "Exchange $exchangeUrl added")
diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
index 53cb259..c280304 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
@@ -52,7 +52,7 @@ sealed class PayStatus {
// TODO bring user to fulfilment URI
object AlreadyPaid : PayStatus()
- data class Error(val error: String) : PayStatus()
+ data class Error(val error: TalerErrorInfo) : PayStatus()
data class Success(val currency: String) : PayStatus()
}
@@ -121,7 +121,7 @@ class PaymentManager(
private fun handleError(operation: String, error: TalerErrorInfo) {
Log.e(TAG, "got $operation error result $error")
- mPayStatus.value = PayStatus.Error(error.userFacingMsg)
+ mPayStatus.value = PayStatus.Error(error)
}
}
diff --git
a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
index 7ed1bab..609adb4 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt
@@ -35,6 +35,7 @@ import net.taler.common.fadeOut
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.databinding.FragmentPromptPaymentBinding
+import net.taler.wallet.showError
/**
* Show a payment and ask the user to accept/decline.
@@ -118,7 +119,10 @@ class PromptPaymentFragment : Fragment(),
ProductImageClickListener {
}
is PayStatus.Error -> {
showLoading(false)
- ui.details.errorView.text = getString(R.string.payment_error,
payStatus.error)
+ if (model.devMode.value == true) {
+ showError(payStatus.error)
+ }
+ ui.details.errorView.text = getString(R.string.payment_error,
payStatus.error.userFacingMsg)
ui.details.errorView.fadeIn()
}
is PayStatus.None -> {
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
index 3aa0963..87abb47 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
@@ -29,6 +29,7 @@ import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
+import net.taler.wallet.showError
class IncomingPullPaymentFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
@@ -43,6 +44,8 @@ class IncomingPullPaymentFragment : Fragment() {
peerManager.incomingPullState.collect {
if (it is IncomingAccepted) {
findNavController().navigate(R.id.action_promptPullPayment_to_nav_main)
+ } else if (it is IncomingError) {
+ showError(it.info)
}
}
}
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
index 736ccd5..118104e 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
@@ -29,6 +29,7 @@ import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
+import net.taler.wallet.showError
class IncomingPushPaymentFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
@@ -43,6 +44,8 @@ class IncomingPushPaymentFragment : Fragment() {
peerManager.incomingPushState.collect {
if (it is IncomingAccepted) {
findNavController().navigate(R.id.action_promptPushPayment_to_nav_main)
+ } else if (it is IncomingError) {
+ showError(it.info)
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
index 565aeb1..7b1eee8 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
@@ -23,6 +23,7 @@ import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController
import net.taler.common.Amount
import net.taler.wallet.MainViewModel
@@ -30,6 +31,7 @@ import net.taler.wallet.R
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
import net.taler.wallet.exchanges.ExchangeItem
+import net.taler.wallet.showError
class OutgoingPullFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
@@ -66,6 +68,17 @@ class OutgoingPullFragment : Fragment() {
}
}
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ lifecycleScope.launchWhenStarted {
+ peerManager.pullState.collect {
+ if (it is OutgoingError && model.devMode.value == true) {
+ showError(it.info)
+ }
+ }
+ }
+ }
+
override fun onStart() {
super.onStart()
activity?.setTitle(R.string.receive_peer_title)
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
index 255aee5..c586a1d 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
@@ -24,6 +24,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import net.taler.common.Amount
@@ -31,6 +32,7 @@ import net.taler.wallet.MainViewModel
import net.taler.wallet.R
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
+import net.taler.wallet.showError
class OutgoingPushFragment : Fragment() {
private val model: MainViewModel by activityViewModels()
@@ -80,6 +82,17 @@ class OutgoingPushFragment : Fragment() {
}
}
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ lifecycleScope.launchWhenStarted {
+ peerManager.pushState.collect {
+ if (it is OutgoingError && model.devMode.value == true) {
+ showError(it.info)
+ }
+ }
+ }
+ }
+
override fun onStart() {
super.onStart()
activity?.setTitle(R.string.send_peer_title)
diff --git a/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
b/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
index f3c41e8..29f18c7 100644
--- a/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
@@ -22,10 +22,11 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
import net.taler.common.Amount
+import net.taler.wallet.backend.TalerErrorInfo
import net.taler.wallet.backend.WalletBackendApi
sealed class RefundStatus {
- data class Error(val msg: String) : RefundStatus()
+ data class Error(val error: TalerErrorInfo) : RefundStatus()
data class Success(val response: RefundResponse) : RefundStatus()
}
@@ -48,7 +49,7 @@ class RefundManager(
api.request("applyRefund", RefundResponse.serializer()) {
put("talerRefundUri", refundUri)
}.onError {
- liveData.postValue(RefundStatus.Error(it.userFacingMsg))
+ liveData.postValue(RefundStatus.Error(it))
}.onSuccess {
liveData.postValue(RefundStatus.Success(it))
}
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
index fcc7787..ed4c4da 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
@@ -24,12 +24,13 @@ import androidx.lifecycle.switchMap
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import net.taler.wallet.TAG
+import net.taler.wallet.backend.TalerErrorInfo
import net.taler.wallet.backend.WalletBackendApi
import net.taler.wallet.transactions.ExtendedStatus.Pending
import java.util.LinkedList
sealed class TransactionsResult {
- class Error(val msg: String) : TransactionsResult()
+ class Error(val error: TalerErrorInfo) : TransactionsResult()
class Success(val transactions: List<Transaction>) : TransactionsResult()
}
@@ -72,7 +73,7 @@ class TransactionManager(
if (searchQuery != null) put("search", searchQuery)
put("currency", currency)
}.onError {
- liveData.postValue(TransactionsResult.Error(it.userFacingMsg))
+ liveData.postValue(TransactionsResult.Error(it))
mProgress.postValue(false)
}.onSuccess { result ->
val transactions = LinkedList(result.transactions)
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
index 5dff704..bc3c722 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt
@@ -198,7 +198,7 @@ class TransactionsFragment : Fragment(),
OnTransactionClickListener, ActionMode.
private fun onTransactionsResult(result: TransactionsResult) = when
(result) {
is TransactionsResult.Error -> {
ui.list.fadeOut()
- ui.emptyState.text = getString(R.string.transactions_error,
result.msg)
+ ui.emptyState.text = getString(R.string.transactions_error,
result.error.userFacingMsg)
ui.emptyState.fadeIn()
}
is TransactionsResult.Success -> {
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>
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-android] branch master updated (2e255f7 -> 4d2b5a6),
gnunet <=