gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-android] branch master updated (d72548e -> 9ee202a)


From: gnunet
Subject: [taler-taler-android] branch master updated (d72548e -> 9ee202a)
Date: Mon, 06 Apr 2020 17:16:16 +0200

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

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

    from d72548e  [wallet] add detail page for payment sent event in history
     new f1d4e51  [wallet] show detail page for refunds
     new 9ee202a  [wallet] expose notification payloads to Android UI

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../main/java/net/taler/wallet/WalletViewModel.kt  | 22 ++++++-----------
 .../net/taler/wallet/backend/WalletBackendApi.kt   | 10 ++++++--
 .../taler/wallet/backend/WalletBackendService.kt   | 10 ++++----
 .../net/taler/wallet/history/HistoryAdapter.kt     |  3 +++
 .../java/net/taler/wallet/history/HistoryEvent.kt  |  1 +
 .../taler/wallet/history/HistoryEventFragment.kt   | 28 ++++++++++++++++++----
 .../wallet/pending/PendingOperationsFragment.kt    |  5 ++++
 .../wallet/pending/PendingOperationsManager.kt     |  7 ------
 8 files changed, 54 insertions(+), 32 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/history/HistoryAdapter.kt 
b/wallet/src/main/java/net/taler/wallet/history/HistoryAdapter.kt
index 1c7f15e..ede55df 100644
--- a/wallet/src/main/java/net/taler/wallet/history/HistoryAdapter.kt
+++ b/wallet/src/main/java/net/taler/wallet/history/HistoryAdapter.kt
@@ -71,13 +71,16 @@ internal class HistoryAdapter(
         private val icon: ImageView = v.findViewById(R.id.icon)
         protected val title: TextView = v.findViewById(R.id.title)
         private val time: TextView = v.findViewById(R.id.time)
+        private val selectableBackground = v.background
 
         @CallSuper
         open fun bind(event: HistoryEvent) {
             if (devMode || event.detailPageLayout != 0) {
+                v.background = selectableBackground
                 v.setOnClickListener { listener.onEventClicked(event) }
             } else {
                 v.background = null
+                v.setOnClickListener(null)
             }
             icon.setImageResource(event.icon)
             if (event.title == 0) title.text = event::class.java.simpleName
diff --git a/wallet/src/main/java/net/taler/wallet/history/HistoryEvent.kt 
b/wallet/src/main/java/net/taler/wallet/history/HistoryEvent.kt
index 57bf6a3..50a973f 100644
--- a/wallet/src/main/java/net/taler/wallet/history/HistoryEvent.kt
+++ b/wallet/src/main/java/net/taler/wallet/history/HistoryEvent.kt
@@ -407,6 +407,7 @@ class HistoryRefundedEvent(
     override val icon = R.drawable.history_refund
     override val title = R.string.history_event_refund
     override val layout = R.layout.history_receive
+    override val detailPageLayout = R.layout.fragment_event_paid
     override val showToUser = true
 }
 
diff --git 
a/wallet/src/main/java/net/taler/wallet/history/HistoryEventFragment.kt 
b/wallet/src/main/java/net/taler/wallet/history/HistoryEventFragment.kt
index 6a07625..0093bb5 100644
--- a/wallet/src/main/java/net/taler/wallet/history/HistoryEventFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/history/HistoryEventFragment.kt
@@ -25,12 +25,14 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.Toast
 import android.widget.Toast.LENGTH_LONG
+import androidx.core.content.ContextCompat.getColor
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import kotlinx.android.synthetic.main.fragment_event_paid.*
 import kotlinx.android.synthetic.main.fragment_event_withdraw.*
 import kotlinx.android.synthetic.main.fragment_event_withdraw.feeView
 import kotlinx.android.synthetic.main.fragment_event_withdraw.timeView
+import net.taler.common.Amount
 import net.taler.common.toAbsoluteTime
 import net.taler.wallet.R
 import net.taler.wallet.WalletViewModel
@@ -65,7 +67,12 @@ class HistoryEventFragment : Fragment() {
         when (val e = event) {
             is HistoryWithdrawnEvent -> bind(e)
             is HistoryPaymentSentEvent -> bind(e)
-            else -> Toast.makeText(requireContext(), "event not implement", 
LENGTH_LONG).show()
+            is HistoryRefundedEvent -> bind(e)
+            else -> Toast.makeText(
+                requireContext(),
+                "event ${e.javaClass} not implement",
+                LENGTH_LONG
+            ).show()
         }
     }
 
@@ -96,12 +103,25 @@ class HistoryEventFragment : Fragment() {
 
     private fun bind(event: HistoryPaymentSentEvent) {
         amountPaidWithFeesView.text = event.amountPaidWithFees.toString()
-        orderAmountView.text = event.orderShortInfo.amount.toString()
         val fee = event.amountPaidWithFees - event.orderShortInfo.amount
+        bindOrderAndFee(event.orderShortInfo, fee)
+    }
+
+    private fun bind(event: HistoryRefundedEvent) {
+        amountPaidWithFeesLabel.text = getString(R.string.history_event_refund)
+        amountPaidWithFeesView.setTextColor(getColor(requireContext(), 
R.color.green))
+        amountPaidWithFeesView.text =
+            getString(R.string.amount_positive, 
event.amountRefundedEffective.toString())
+        val fee = event.orderShortInfo.amount - event.amountRefundedEffective
+        bindOrderAndFee(event.orderShortInfo, fee)
+    }
+
+    private fun bindOrderAndFee(orderShortInfo: OrderShortInfo, fee: Amount) {
+        orderAmountView.text = orderShortInfo.amount.toString()
         feeView.text = getString(R.string.amount_negative, fee.toString())
-        orderSummaryView.text = event.orderShortInfo.summary
+        orderSummaryView.text = orderShortInfo.summary
         orderIdView.text =
-            getString(R.string.history_event_payment_sent_order_id, 
event.orderShortInfo.orderId)
+            getString(R.string.history_event_payment_sent_order_id, 
orderShortInfo.orderId)
     }
 
 }
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]