gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-android] branch master updated: display errors from the wa


From: gnunet
Subject: [taler-wallet-android] branch master updated: display errors from the wallet backend
Date: Tue, 17 Dec 2019 12:49:27 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-android.

The following commit(s) were added to refs/heads/master by this push:
     new be0741f  display errors from the wallet backend
be0741f is described below

commit be0741faa232c370e1ee29426aa639ac8d0d2321
Author: Florian Dold <address@hidden>
AuthorDate: Tue Dec 17 12:49:22 2019 +0100

    display errors from the wallet backend
---
 .../main/java/net/taler/wallet/PromptPayment.kt    |  7 ++++
 .../main/java/net/taler/wallet/WalletViewModel.kt  | 49 +++++++++++++++++-----
 .../net/taler/wallet/backend/WalletBackendApi.kt   |  7 ++--
 .../taler/wallet/backend/WalletBackendService.kt   |  1 +
 .../main/res/layout/fragment_prompt_payment.xml    |  8 ++++
 5 files changed, 59 insertions(+), 13 deletions(-)

diff --git a/app/src/main/java/net/taler/wallet/PromptPayment.kt 
b/app/src/main/java/net/taler/wallet/PromptPayment.kt
index 42a9b39..f5d4bce 100644
--- a/app/src/main/java/net/taler/wallet/PromptPayment.kt
+++ b/app/src/main/java/net/taler/wallet/PromptPayment.kt
@@ -87,12 +87,14 @@ class PromptPayment : Fragment() {
     private fun showPayStatus(view: View, payStatus: PayStatus) {
         val promptPaymentDetails = 
view.findViewById<View>(R.id.prompt_payment_details)
         val balanceInsufficientWarning = 
view.findViewById<View>(R.id.balance_insufficient_warning)
+        val errorTextView = view.findViewById<TextView>(R.id.pay_error_text)
         val confirmPaymentButton = 
view.findViewById<Button>(R.id.button_confirm_payment)
         when (payStatus) {
             is PayStatus.Prepared -> {
                 fillOrderInfo(view, payStatus.contractTerms, 
payStatus.totalFees)
                 promptPaymentDetails.visibility = View.VISIBLE
                 balanceInsufficientWarning.visibility = View.GONE
+                errorTextView.visibility = View.GONE
                 confirmPaymentButton.isEnabled = true
 
                 confirmPaymentButton.setOnClickListener {
@@ -104,6 +106,7 @@ class PromptPayment : Fragment() {
                 fillOrderInfo(view, payStatus.contractTerms, null)
                 promptPaymentDetails.visibility = View.VISIBLE
                 balanceInsufficientWarning.visibility = View.VISIBLE
+                errorTextView.visibility = View.GONE
                 confirmPaymentButton.isEnabled = false
             }
             is PayStatus.Success -> {
@@ -114,6 +117,10 @@ class PromptPayment : Fragment() {
                 
activity!!.findNavController(R.id.nav_host_fragment).navigate(R.id.action_promptPayment_to_alreadyPaid)
                 model.payStatus.value = PayStatus.None()
             }
+            is PayStatus.Error -> {
+                errorTextView.visibility = View.VISIBLE
+                errorTextView.text = "Error: ${payStatus.error}"
+            }
             is PayStatus.None -> {
                 // No payment active.
             }
diff --git a/app/src/main/java/net/taler/wallet/WalletViewModel.kt 
b/app/src/main/java/net/taler/wallet/WalletViewModel.kt
index 9e93fcf..13fa28e 100644
--- a/app/src/main/java/net/taler/wallet/WalletViewModel.kt
+++ b/app/src/main/java/net/taler/wallet/WalletViewModel.kt
@@ -20,6 +20,7 @@ import android.app.Application
 import android.util.Log
 import androidx.lifecycle.AndroidViewModel
 import androidx.lifecycle.MutableLiveData
+import com.google.android.material.snackbar.Snackbar
 import net.taler.wallet.backend.WalletBackendApi
 import org.json.JSONObject
 
@@ -174,8 +175,11 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
             return
         }
         activeGetBalance++
-        walletBackendApi.sendRequest("getBalances", null) { result ->
+        walletBackendApi.sendRequest("getBalances", null) { isError, result ->
             activeGetBalance--
+            if (isError) {
+                return@sendRequest
+            }
             val balanceList = mutableListOf<BalanceEntry>()
             val byCurrency = result.getJSONObject("byCurrency")
             val currencyList = byCurrency.keys().asSequence().toList().sorted()
@@ -197,8 +201,12 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
             return
         }
         activeGetPending++
-        walletBackendApi.sendRequest("getPendingOperations", null) { result ->
+        walletBackendApi.sendRequest("getPendingOperations", null) { isError, 
result ->
             activeGetPending--
+            if (isError) {
+                Log.i(TAG, "got getPending error result")
+                return@sendRequest
+            }
             Log.i(TAG, "got getPending result")
             val pendingList = mutableListOf<PendingOperationInfo>()
             val pendingJson = result.getJSONArray("pendingOperations")
@@ -213,7 +221,10 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
     }
 
     fun getHistory(cb: (r: HistoryResult) -> Unit) {
-        walletBackendApi.sendRequest("getHistory", null) { result ->
+        walletBackendApi.sendRequest("getHistory", null) { isError, result ->
+            if (isError) {
+                return@sendRequest
+            }
             val historyEntries = mutableListOf<HistoryEntry>()
             val historyList = result.getJSONArray("history")
             for (i in 0 until historyList.length()) {
@@ -232,7 +243,7 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
     fun withdrawTestkudos() {
         testWithdrawalInProgress.value = true
 
-        walletBackendApi.sendRequest("withdrawTestkudos", null) {
+        walletBackendApi.sendRequest("withdrawTestkudos", null) { _, _ ->
             testWithdrawalInProgress.postValue(false)
         }
     }
@@ -246,7 +257,12 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
         val myPayRequestId = this.currentPayRequestId
         this.payStatus.value = PayStatus.Loading()
 
-        walletBackendApi.sendRequest("preparePay", args) { result ->
+        walletBackendApi.sendRequest("preparePay", args) { isError, result ->
+            if (isError) {
+                Log.v(TAG, "got preparePay error result")
+                payStatus.value = PayStatus.Error(result.toString(0))
+                return@sendRequest
+            }
             Log.v(TAG, "got preparePay result")
             if (myPayRequestId != this.currentPayRequestId) {
                 Log.v(TAG, "preparePay result was for old request")
@@ -292,7 +308,7 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
         val args = JSONObject()
         args.put("proposalId", proposalId)
 
-        walletBackendApi.sendRequest("confirmPay", args) {
+        walletBackendApi.sendRequest("confirmPay", args) { isError, result ->
             payStatus.postValue(PayStatus.Success())
         }
     }
@@ -325,7 +341,10 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
         this.currentWithdrawRequestId++
         val myWithdrawRequestId = this.currentWithdrawRequestId
 
-        walletBackendApi.sendRequest("getWithdrawDetailsForUri", args) { 
result ->
+        walletBackendApi.sendRequest("getWithdrawDetailsForUri", args) { 
isError, result ->
+            if (isError) {
+                return@sendRequest
+            }
             if (myWithdrawRequestId != this.currentWithdrawRequestId) {
                 return@sendRequest
             }
@@ -351,7 +370,10 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
         this.currentWithdrawRequestId++
         val myWithdrawRequestId = this.currentWithdrawRequestId
 
-        walletBackendApi.sendRequest("getWithdrawDetailsForUri", args) { 
result ->
+        walletBackendApi.sendRequest("getWithdrawDetailsForUri", args) { 
isError, result ->
+            if (isError) {
+                return@sendRequest
+            }
             if (myWithdrawRequestId != this.currentWithdrawRequestId) {
                 return@sendRequest
             }
@@ -397,7 +419,11 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
 
         withdrawStatus.value = WithdrawStatus.Withdrawing(talerWithdrawUri)
 
-        walletBackendApi.sendRequest("acceptWithdrawal", args) {
+        walletBackendApi.sendRequest("acceptWithdrawal", args) { isError, _ ->
+            if (isError) {
+                Log.v(TAG, "got acceptWithdrawal error result")
+                return@sendRequest
+            }
             Log.v(TAG, "got acceptWithdrawal result")
             val status = withdrawStatus.value
             if (status !is WithdrawStatus.Withdrawing) {
@@ -425,7 +451,10 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
                 val args = JSONObject()
                 args.put("exchangeBaseUrl", s.exchangeBaseUrl)
                 args.put("etag", s.tosEtag)
-                walletBackendApi.sendRequest("acceptExchangeTermsOfService", 
args) {
+                walletBackendApi.sendRequest("acceptExchangeTermsOfService", 
args) { isError, _ ->
+                    if (isError) {
+                        return@sendRequest
+                    }
                     // Try withdrawing again with accepted ToS
                     getWithdrawalInfo(s.talerWithdrawUri)
                 }
diff --git a/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt 
b/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
index 36795f5..0d078a9 100644
--- a/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
+++ b/app/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
@@ -33,7 +33,7 @@ class WalletBackendApi(private val app: Application) {
 
     private var walletBackendMessenger: Messenger? = null
     private val queuedMessages = LinkedList<Message>()
-    private val handlers = SparseArray<(message: JSONObject) -> Unit>()
+    private val handlers = SparseArray<(isError: Boolean, message: JSONObject) 
-> Unit>()
     private var nextRequestID = 1
     var notificationHandler: (() -> Unit)? = null
     var connectedHandler: (() -> Unit)? = null
@@ -78,8 +78,9 @@ class WalletBackendApi(private val app: Application) {
                         Log.e(TAG, "response did not contain response payload")
                         return
                     }
+                    val isError = msg.data.getBoolean("isError")
                     val json = JSONObject(response)
-                    h(json)
+                    h(isError, json)
                 }
                 WalletBackendService.MSG_NOTIFY -> {
                     val nh = api.notificationHandler
@@ -110,7 +111,7 @@ class WalletBackendApi(private val app: Application) {
     fun sendRequest(
         operation: String,
         args: JSONObject?,
-        onResponse: (message: JSONObject) -> Unit = { }
+        onResponse: (isError: Boolean, message: JSONObject) -> Unit = { _, _ 
-> }
     ) {
         val requestID = nextRequestID++
         Log.i(TAG, "sending request for operation $operation ($requestID)")
diff --git a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt 
b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
index 297f0f7..6ae77cc 100644
--- a/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
+++ b/app/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
@@ -220,6 +220,7 @@ class WalletBackendService : Service() {
                         } else {
                             b.putString("response", "{}")
                         }
+                        b.putBoolean("isError", message.getBoolean("isError"))
                         b.putInt("requestID", rd.clientRequestID)
                         b.putString("operation", operation)
                         rd.messenger.send(m)
diff --git a/app/src/main/res/layout/fragment_prompt_payment.xml 
b/app/src/main/res/layout/fragment_prompt_payment.xml
index 8d01126..ac2b88e 100644
--- a/app/src/main/res/layout/fragment_prompt_payment.xml
+++ b/app/src/main/res/layout/fragment_prompt_payment.xml
@@ -6,6 +6,14 @@
              android:layout_margin="15dp"
              tools:context=".PromptPayment">
 
+    <TextView
+            android:text="Error:"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="15sp"
+            android:layout_gravity="center"
+            android:id="@+id/pay_error_text" 
android:textColor="@android:color/holo_red_dark"/>
+
 
     <LinearLayout
             android:orientation="vertical"

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]