gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] 02/02: [wallet] expose notification payloads to An


From: gnunet
Subject: [taler-taler-android] 02/02: [wallet] expose notification payloads to Android UI
Date: Mon, 06 Apr 2020 17:16:18 +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 9ee202aebf6416bb336729cb3044e4921a94bee4
Author: Torsten Grote <address@hidden>
AuthorDate: Mon Apr 6 12:14:46 2020 -0300

    [wallet] expose notification payloads to Android UI
    
    also ignore ping notifications (to see if they are really needed)
---
 .../main/java/net/taler/wallet/WalletViewModel.kt  | 22 +++++++---------------
 .../net/taler/wallet/backend/WalletBackendApi.kt   | 10 ++++++++--
 .../taler/wallet/backend/WalletBackendService.kt   | 10 ++++++----
 .../wallet/pending/PendingOperationsFragment.kt    |  5 +++++
 .../wallet/pending/PendingOperationsManager.kt     |  7 -------
 5 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt 
b/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt
index fc17c7c..c16b6fc 100644
--- a/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/WalletViewModel.kt
@@ -47,16 +47,13 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
     val devMode = MutableLiveData(BuildConfig.DEBUG)
     val showProgressBar = MutableLiveData<Boolean>()
 
-    private var activeGetBalance = 0
-
     private val walletBackendApi = WalletBackendApi(app, {
-        activeGetBalance = 0
-        loadBalances()
-        pendingOperationsManager.getPending()
-    }) {
-        Log.i(TAG, "Received notification from wallet-core")
         loadBalances()
-        pendingOperationsManager.getPending()
+    }) { payload ->
+        if (payload.getString("type") != "waiting-for-retry") {
+            Log.i(TAG, "Received notification from wallet-core: 
${payload.toString(2)}")
+            loadBalances()
+        }
     }
 
     private val mapper = ObjectMapper()
@@ -65,8 +62,7 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
 
     val withdrawManager = WithdrawManager(walletBackendApi)
     val paymentManager = PaymentManager(walletBackendApi, mapper)
-    val pendingOperationsManager: PendingOperationsManager =
-        PendingOperationsManager(walletBackendApi)
+    val pendingOperationsManager = PendingOperationsManager(walletBackendApi)
     val historyManager = HistoryManager(walletBackendApi, mapper)
     val refundManager = RefundManager(walletBackendApi)
 
@@ -77,14 +73,10 @@ class WalletViewModel(val app: Application) : 
AndroidViewModel(app) {
 
     @UiThread
     fun loadBalances() {
-        if (activeGetBalance > 0) {
-            return
-        }
-        activeGetBalance++
         showProgressBar.value = true
         walletBackendApi.sendRequest("getBalances", null) { isError, result ->
-            activeGetBalance--
             if (isError) {
+                Log.e(TAG, "Error retrieving balances: ${result.toString(2)}")
                 return@sendRequest
             }
             val balanceList = mutableListOf<BalanceItem>()
diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt 
b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
index d447287..3ffcd7b 100644
--- a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
+++ b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt
@@ -35,7 +35,7 @@ import java.util.*
 class WalletBackendApi(
     private val app: Application,
     private val onConnected: (() -> Unit),
-    private val notificationHandler: (() -> Unit)
+    private val notificationHandler: ((payload: JSONObject) -> Unit)
 ) {
 
     private var walletBackendMessenger: Messenger? = null
@@ -85,7 +85,13 @@ class WalletBackendApi(
                     h(isError, json)
                 }
                 WalletBackendService.MSG_NOTIFY -> {
-                    api.notificationHandler.invoke()
+                    val payloadStr = msg.data.getString("payload")
+                    if (payloadStr == null) {
+                        Log.e(TAG, "Notification had no payload: $msg")
+                    } else {
+                        val payload = JSONObject(payloadStr)
+                        api.notificationHandler.invoke(payload)
+                    }
                 }
             }
         }
diff --git 
a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendService.kt 
b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
index 0b71774..c0f7e9c 100644
--- a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
+++ b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendService.kt
@@ -158,10 +158,12 @@ class WalletBackendService : Service() {
         return messenger.binder
     }
 
-    private fun sendNotify() {
+    private fun sendNotify(payload: String) {
         var rm: LinkedList<Messenger>? = null
         for (s in subscribers) {
             val m = Message.obtain(null, MSG_NOTIFY)
+            val b = m.data
+            b.putString("payload", payload)
             try {
                 s.send(m)
             } catch (e: RemoteException) {
@@ -184,7 +186,7 @@ class WalletBackendService : Service() {
         val message = JSONObject(messageStr)
         when (message.getString("type")) {
             "notification" -> {
-                sendNotify()
+                sendNotify(message.getString("payload"))
             }
             "tunnelHttp" -> {
                 Log.v(TAG, "got http tunnel request!")
@@ -197,8 +199,8 @@ class WalletBackendService : Service() {
             "response" -> {
                 when (val operation = message.getString("operation")) {
                     "init" -> {
-                        Log.v(TAG, "got response for init operation")
-                        sendNotify()
+                        Log.v(TAG, "got response for init operation: 
${message.toString(2)}")
+                        sendNotify(message.toString(2))
                     }
                     "reset" -> {
                         exitProcess(1)
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 946e5ba..d8b0896 100644
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsFragment.kt
@@ -84,6 +84,11 @@ class PendingOperationsFragment : Fragment(), 
PendingOperationClickListener {
         })
     }
 
+    override fun onStart() {
+        super.onStart()
+        pendingOperationsManager.getPending()
+    }
+
     override fun onOptionsItemSelected(item: MenuItem): Boolean {
         return when (item.itemId) {
             R.id.retry_pending -> {
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 694c5da..6c58b81 100644
--- a/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/pending/PendingOperationsManager.kt
@@ -29,17 +29,10 @@ open class PendingOperationInfo(
 
 class PendingOperationsManager(private val walletBackendApi: WalletBackendApi) 
{
 
-    private var activeGetPending = 0
-
     val pendingOperations = MutableLiveData<List<PendingOperationInfo>>()
 
     internal fun getPending() {
-        if (activeGetPending > 0) {
-            return
-        }
-        activeGetPending++
         walletBackendApi.sendRequest("getPendingOperations", null) { isError, 
result ->
-            activeGetPending--
             if (isError) {
                 Log.i(TAG, "got getPending error result: $result")
                 return@sendRequest

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



reply via email to

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