gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 01/04: [wallet] Add basic support for refunds


From: gnunet
Subject: [taler-taler-android] 01/04: [wallet] Add basic support for refunds
Date: Wed, 01 Apr 2020 20:31:08 +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 a66b2179638ba8c458aaba86d0707c7046ad881b
Author: Torsten Grote <address@hidden>
AuthorDate: Mon Mar 30 14:47:52 2020 -0300

    [wallet] Add basic support for refunds
---
 .../src/main/java/net/taler/wallet/MainActivity.kt | 15 +++++--
 .../main/java/net/taler/wallet/WalletViewModel.kt  |  2 +
 .../wallet/pending/PendingOperationsManager.kt     |  2 +-
 .../java/net/taler/wallet/refund/RefundManager.kt  | 48 ++++++++++++++++++++++
 wallet/src/main/res/values/strings.xml             |  3 ++
 5 files changed, 66 insertions(+), 4 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt 
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index df7bdc6..26af3f0 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -38,8 +38,9 @@ import androidx.navigation.fragment.NavHostFragment
 import androidx.navigation.ui.AppBarConfiguration
 import androidx.navigation.ui.setupWithNavController
 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.android.material.snackbar.Snackbar.LENGTH_SHORT
 import com.google.zxing.integration.android.IntentIntegrator
 import 
com.google.zxing.integration.android.IntentIntegrator.parseActivityResult
 import kotlinx.android.synthetic.main.activity_main.*
@@ -50,6 +51,7 @@ import 
net.taler.wallet.HostCardEmulatorService.Companion.HTTP_TUNNEL_RESPONSE
 import 
net.taler.wallet.HostCardEmulatorService.Companion.MERCHANT_NFC_CONNECTED
 import 
net.taler.wallet.HostCardEmulatorService.Companion.MERCHANT_NFC_DISCONNECTED
 import 
net.taler.wallet.HostCardEmulatorService.Companion.TRIGGER_PAYMENT_ACTION
+import net.taler.wallet.refund.RefundStatus
 import java.util.Locale.ROOT
 
 class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener,
@@ -150,8 +152,15 @@ class MainActivity : AppCompatActivity(), 
OnNavigationItemSelectedListener,
                 model.withdrawManager.getWithdrawalInfo(url)
             }
             url.toLowerCase(ROOT).startsWith("taler://refund/") -> {
-                // TODO implement refunds
-                Snackbar.make(nav_view, "Refunds are not yet implemented", 
LENGTH_SHORT).show()
+                model.showProgressBar.value = true
+                model.refundManager.refund(url).observe(this, Observer { 
status ->
+                    model.showProgressBar.value = false
+                    val res = when (status) {
+                        is RefundStatus.Error -> R.string.refund_error
+                        is RefundStatus.Success -> R.string.refund_success
+                    }
+                    Snackbar.make(nav_view, res, LENGTH_LONG).show()
+                })
             }
             else -> {
                 Snackbar.make(
diff --git a/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt 
b/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt
index 9599123..fc17c7c 100644
--- a/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt
@@ -31,6 +31,7 @@ import net.taler.wallet.backend.WalletBackendApi
 import net.taler.wallet.history.HistoryManager
 import net.taler.wallet.payment.PaymentManager
 import net.taler.wallet.pending.PendingOperationsManager
+import net.taler.wallet.refund.RefundManager
 import net.taler.wallet.withdraw.WithdrawManager
 import org.json.JSONObject
 
@@ -67,6 +68,7 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
     val pendingOperationsManager: PendingOperationsManager =
         PendingOperationsManager(walletBackendApi)
     val historyManager = HistoryManager(walletBackendApi, mapper)
+    val refundManager = RefundManager(walletBackendApi)
 
     override fun onCleared() {
         walletBackendApi.destroy()
diff --git 
a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt 
b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
index 2125dbc..694c5da 100644
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
@@ -41,7 +41,7 @@ class PendingOperationsManager(private val walletBackendApi: 
WalletBackendApi) {
         walletBackendApi.sendRequest("getPendingOperations", null) { isError, 
result ->
             activeGetPending--
             if (isError) {
-                Log.i(TAG, "got getPending error result")
+                Log.i(TAG, "got getPending error result: $result")
                 return@sendRequest
             }
             Log.i(TAG, "got getPending result")
diff --git a/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt 
b/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
new file mode 100644
index 0000000..21c634e
--- /dev/null
+++ b/wallet/src/main/java/net/taler/wallet/refund/RefundManager.kt
@@ -0,0 +1,48 @@
+/*
+ * This file is part of GNU Taler
+ * (C) 2020 Taler Systems S.A.
+ *
+ * GNU Taler is free software; you can redistribute it and/or modify it under 
the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 3, or (at your option) any later version.
+ *
+ * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+ * A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * GNU Taler; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+ */
+
+package net.taler.wallet.refund
+
+import android.util.Log
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import net.taler.wallet.TAG
+import net.taler.wallet.backend.WalletBackendApi
+import org.json.JSONObject
+
+sealed class RefundStatus {
+    object Error : RefundStatus()
+    object Success : RefundStatus()
+}
+
+class RefundManager(private val walletBackendApi: WalletBackendApi) {
+
+    fun refund(refundUri: String): LiveData<RefundStatus> {
+        val liveData = MutableLiveData<RefundStatus>()
+        val args = JSONObject().also { it.put("talerRefundUri", refundUri) }
+        walletBackendApi.sendRequest("applyRefund", args) { isError, result ->
+            if (isError) {
+                Log.e(TAG, "Refund Error: $result")
+                liveData.postValue(RefundStatus.Error)
+            } else {
+                Log.e(TAG, "Refund Success: $result")
+                liveData.postValue(RefundStatus.Success)
+            }
+        }
+        return liveData
+    }
+
+}
diff --git a/wallet/src/main/res/values/strings.xml 
b/wallet/src/main/res/values/strings.xml
index 04a507b..6bc073f 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -102,4 +102,7 @@
     <string name="settings_developer">Developer Settings (use with 
caution!)</string>
     <string name="settings_reset">Reset Wallet (dangerous!)</string>
 
+    <string name="refund_error">Error processing refund</string>
+    <string name="refund_success">Refund received</string>
+
 </resources>

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



reply via email to

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