From 9ee202aebf6416bb336729cb3044e4921a94bee4 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 6 Apr 2020 12:14:46 -0300 Subject: [wallet] expose notification payloads to Android UI also ignore ping notifications (to see if they are really needed) --- .../src/main/java/net/taler/wallet/backend/WalletBackendApi.kt | 10 ++++++++-- .../main/java/net/taler/wallet/backend/WalletBackendService.kt | 10 ++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/backend') 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? = 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) -- cgit v1.2.3