gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 06/07: [wallet] Use bottom sheet to show errors in


From: gnunet
Subject: [taler-taler-android] 06/07: [wallet] Use bottom sheet to show errors instead of snackbar
Date: Tue, 08 Sep 2020 22:02:47 +0200

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

torsten-grote pushed a commit to branch master
in repository taler-android.

commit 310775d1cb7a177641c704efb1a98a7ccaac67b3
Author: Torsten Grote <t@grobox.de>
AuthorDate: Tue Sep 8 15:40:27 2020 -0300

    [wallet] Use bottom sheet to show errors instead of snackbar
---
 wallet/src/main/java/net/taler/wallet/MainActivity.kt       | 10 +++-------
 .../main/java/net/taler/wallet/backend/WalletResponse.kt    | 13 ++++++++-----
 .../net/taler/wallet/pending/PendingOperationsFragment.kt   |  5 ++---
 .../src/main/java/net/taler/wallet/refund/RefundManager.kt  |  9 ++-------
 wallet/src/main/res/values/strings.xml                      |  1 +
 5 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt 
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index 0605976..1dafce0 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -43,11 +43,11 @@ import androidx.preference.PreferenceFragmentCompat
 import 
androidx.preference.PreferenceFragmentCompat.OnPreferenceStartFragmentCallback
 import 
com.google.android.material.navigation.NavigationView.OnNavigationItemSelectedListener
 import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_LONG
-import com.google.android.material.snackbar.BaseTransientBottomBar.LENGTH_SHORT
 import com.google.android.material.snackbar.Snackbar
 import com.google.zxing.integration.android.IntentIntegrator
 import 
com.google.zxing.integration.android.IntentIntegrator.parseActivityResult
 import net.taler.common.isOnline
+import net.taler.common.showError
 import net.taler.wallet.BuildConfig.VERSION_CODE
 import net.taler.wallet.BuildConfig.VERSION_NAME
 import net.taler.wallet.HostCardEmulatorService.Companion.HTTP_TUNNEL_RESPONSE
@@ -167,11 +167,7 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
                 model.refundManager.refund(url).observe(this, 
Observer(::onRefundResponse))
             }
             else -> {
-                Snackbar.make(
-                    ui.navView,
-                    "URL from $from doesn't contain a supported Taler Uri.",
-                    LENGTH_SHORT
-                ).show()
+                showError(R.string.error_unsupported_uri, "From: $from\nURI: 
$url")
             }
         }
     }
@@ -180,7 +176,7 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
         model.showProgressBar.value = false
         when (status) {
             is RefundStatus.Error -> {
-                Snackbar.make(ui.navView, R.string.refund_error, 
LENGTH_LONG).show()
+                showError(R.string.refund_error, status.msg)
             }
             is RefundStatus.Success -> {
                 val amount = status.response.amountRefundGranted
diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt 
b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
index 2476607..ab1ac80 100644
--- a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
+++ b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
@@ -73,13 +73,16 @@ data class TalerErrorInfo(
         get() {
             return StringBuilder().apply {
                 append(code)
+                hint?.let { append(" (").append(it).append(")") }
                 message?.let { append(" ").append(it) }
                 details?.let { details ->
-                    append("\n\n")
-                    details.optJSONObject("errorResponse")?.let { 
errorResponse ->
-                        append(errorResponse.optString("code")).append(" ")
-                        append(errorResponse.optString("hint"))
-                    } ?: append(details.toString(2))
+                    if (details.length() > 0) {
+                        append("\n\n")
+                        details.optJSONObject("errorResponse")?.let { 
errorResponse ->
+                            append(errorResponse.optString("code")).append(" ")
+                            append(errorResponse.optString("hint"))
+                        } ?: append(details.toString(2))
+                    }
                 }
             }.toString()
         }
diff --git 
a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt 
b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
index e2f3ca1..e3b5dc2 100644
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
@@ -33,8 +33,7 @@ import androidx.fragment.app.activityViewModels
 import androidx.recyclerview.widget.DividerItemDecoration
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
-import com.google.android.material.snackbar.Snackbar
-import com.google.android.material.snackbar.Snackbar.LENGTH_SHORT
+import net.taler.common.showError
 import net.taler.wallet.MainViewModel
 import net.taler.wallet.R
 import net.taler.wallet.TAG
@@ -110,7 +109,7 @@ class PendingOperationsFragment : Fragment(), 
PendingOperationClickListener {
     }
 
     override fun onPendingOperationClick(type: String, detail: JSONObject) {
-        Snackbar.make(requireView(), "No detail view for $type implemented 
yet.", LENGTH_SHORT).show()
+        requireActivity().showError("No detail view for $type implemented 
yet.")
     }
 
     override fun onPendingOperationActionClick(type: String, detail: 
JSONObject) {
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 559b91d..9c292aa 100644
--- a/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
@@ -16,18 +16,16 @@
 
 package net.taler.wallet.refund
 
-import android.util.Log
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 import kotlinx.serialization.Serializable
 import net.taler.lib.common.Amount
-import net.taler.wallet.TAG
 import net.taler.wallet.backend.WalletBackendApi
 
 sealed class RefundStatus {
-    object Error : RefundStatus()
+    data class Error(val msg: String) : RefundStatus()
     data class Success(val response: RefundResponse) : RefundStatus()
 }
 
@@ -50,11 +48,8 @@ class RefundManager(
             api.request("applyRefund", RefundResponse.serializer()) {
                 put("talerRefundUri", refundUri)
             }.onError {
-                Log.e(TAG, "Refund Error: $it")
-                // TODO show error string
-                liveData.postValue(RefundStatus.Error)
+                liveData.postValue(RefundStatus.Error(it.userFacingMsg))
             }.onSuccess {
-                Log.e(TAG, "Refund Success: $it")
                 liveData.postValue(RefundStatus.Success(it))
             }
         }
diff --git a/wallet/src/main/res/values/strings.xml 
b/wallet/src/main/res/values/strings.xml
index b419766..9844cfa 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -55,6 +55,7 @@ GNU Taler is immune against many types of fraud, such as 
phishing of credit card
     <string name="or">or</string>
 
     <string name="offline">Operation requires internet access. Please ensure 
your internet connection works and try again.</string>
+    <string name="error_unsupported_uri">Error: This Taler URI is not 
supported.</string>
 
     <string name="menu_settings">Settings</string>
     <string name="menu_retry_pending_operations">Retry Pending 
Operations</string>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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