summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-04-28 23:03:38 -0600
committerTorsten Grote <t@grobox.de>2023-06-28 09:01:10 -0300
commit43c30b4482b68a8b5073afec66b68b07b30be436 (patch)
tree8a7ec1d82dcf6c42d84e6304dbcb4f71208305d9
parent2e255f70a501043307e3f14e89755e979a0d5d4c (diff)
downloadtaler-android-43c30b4482b68a8b5073afec66b68b07b30be436.tar.gz
taler-android-43c30b4482b68a8b5073afec66b68b07b30be436.tar.bz2
taler-android-43c30b4482b68a8b5073afec66b68b07b30be436.zip
[wallet] Show errors as JSON
bug 0007606
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainActivity.kt7
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/Utils.kt25
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt7
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt6
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/DepositState.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt6
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeManager.kt8
-rw-r--r--wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt4
-rw-r--r--wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt6
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt3
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt13
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt13
-rw-r--r--wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt5
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt5
-rw-r--r--wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt2
19 files changed, 104 insertions, 18 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..c9901a6 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -139,6 +139,7 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener,
}
if (it) barcodeLauncher.launch(scanOptions)
})
+
}
@Deprecated("Deprecated in Java")
@@ -295,7 +296,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 == false) {
+ showError(R.string.refund_error, status.error.userFacingMsg)
+ } else {
+ showError(status.error)
+ }
}
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..9dfe541 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)
+}
+
+fun Fragment.showError(error: TalerErrorInfo) {
+ @Suppress("OPT_IN_USAGE")
+ val json = Json {
+ prettyPrint = true
+ prettyPrintIndent = " "
+ }
+ val message = json.encodeToString(error)
+ this@showError.showError(message)
+}
+
+fun FragmentActivity.showError(error: TalerErrorInfo) {
+ @Suppress("OPT_IN_USAGE")
+ val json = Json {
+ prettyPrint = true
+ prettyPrintIndent = " "
+ }
+ val message = json.encodeToString(error)
+ this@showError.showError(message)
} \ No newline at end of file
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..7e1b7cc 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 {
@@ -68,6 +69,11 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener {
exchangeManager.exchanges.observe(viewLifecycleOwner) { exchanges ->
onExchangeUpdate(exchanges)
}
+ exchangeManager.errorEvent.observe(viewLifecycleOwner, EventObserver { error ->
+ if (model.devMode.value == true) {
+ showError(error)
+ }
+ })
exchangeManager.addError.observe(viewLifecycleOwner, EventObserver { error ->
if (error) onAddExchangeFailed()
})
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..a97e188 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
@@ -49,6 +50,9 @@ class ExchangeManager(
private val mAddError = MutableLiveData<Event<Boolean>>()
val addError: LiveData<Event<Boolean>> = mAddError
+ private val mErrorEvent = MutableLiveData<Event<TalerErrorInfo>>()
+ val errorEvent: LiveData<Event<TalerErrorInfo>> = mErrorEvent
+
var withdrawalExchange: ExchangeItem? = null
private fun list(): LiveData<List<ExchangeItem>> {
@@ -56,6 +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}")
}.onSuccess {
Log.d(TAG, "Exchange list: ${it.exchanges}")
@@ -71,8 +76,9 @@ class ExchangeManager(
api.request<Unit>("addExchange") {
put("exchangeBaseUrl", exchangeUrl)
}.onError {
- mProgress.value = false
Log.e(TAG, "Error adding exchange: $it")
+ mProgress.value = false
+ mErrorEvent.value = it.toEvent()
mAddError.value = true.toEvent()
}.onSuccess {
mProgress.value = false
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 -> {