gnunet-svn
[Top][All Lists]
Advanced

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

[taler-merchant-terminal-android] 01/02: Allow to navigate to next order


From: gnunet
Subject: [taler-merchant-terminal-android] 01/02: Allow to navigate to next order even if current order is empty
Date: Thu, 27 Feb 2020 21:06:25 +0100

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

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

commit f08ae2791f564cb1fce394e4e277946f86c20efc
Author: Torsten Grote <address@hidden>
AuthorDate: Thu Feb 27 12:09:48 2020 -0300

    Allow to navigate to next order even if current order is empty
---
 .../net/taler/merchantpos/order/OrderFragment.kt   |  9 +++---
 .../net/taler/merchantpos/order/OrderManager.kt    | 32 ++++++++++------------
 2 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt 
b/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
index 8ababad..508f25d 100644
--- a/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
+++ b/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
@@ -23,7 +23,8 @@ class OrderFragment : Fragment() {
     private val orderManager by lazy { viewModel.orderManager }
     private val paymentManager by lazy { viewModel.paymentManager }
     private val args: OrderFragmentArgs by navArgs()
-    private val liveOrder by lazy { orderManager.getOrder(args.orderId) }
+    private val orderId: Int get() = args.orderId
+    private val liveOrder by lazy { orderManager.getOrder(orderId) }
 
     override fun onCreateView(
         inflater: LayoutInflater,
@@ -46,7 +47,6 @@ class OrderFragment : Fragment() {
                 restartButton.isEnabled = state == ENABLED
                 completeButton.isEnabled = state == ENABLED
             }
-            nextButton.isEnabled = state == ENABLED
         })
         minusButton.setOnClickListener { liveOrder.decreaseSelectedOrderLine() 
}
         plusButton.setOnClickListener { liveOrder.increaseSelectedOrderLine() }
@@ -54,8 +54,9 @@ class OrderFragment : Fragment() {
             minusButton.isEnabled = allowed
             plusButton.isEnabled = allowed
         })
-        orderManager.hasPreviousOrder.observe(viewLifecycleOwner, Observer { 
hasPreviousOrder ->
-            prevButton.isEnabled = hasPreviousOrder
+        prevButton.isEnabled = orderManager.hasPreviousOrder(orderId)
+        orderManager.hasNextOrder(orderId).observe(viewLifecycleOwner, 
Observer { hasNextOrder ->
+            nextButton.isEnabled = hasNextOrder
         })
     }
 
diff --git a/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt 
b/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
index 53c824b..21738bb 100644
--- a/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
+++ b/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
@@ -4,10 +4,12 @@ import android.util.Log
 import androidx.annotation.UiThread
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.Transformations.map
 import com.fasterxml.jackson.core.type.TypeReference
 import com.fasterxml.jackson.databind.ObjectMapper
 import net.taler.merchantpos.Amount.Companion.fromString
 import net.taler.merchantpos.config.ConfigurationReceiver
+import net.taler.merchantpos.order.RestartState.ENABLED
 import org.json.JSONObject
 
 class OrderManager(private val mapper: ObjectMapper) : ConfigurationReceiver {
@@ -24,9 +26,6 @@ class OrderManager(private val mapper: ObjectMapper) : 
ConfigurationReceiver {
 
     private val orders = LinkedHashMap<Int, MutableLiveOrder>()
 
-    private val mHasPreviousOrder = MutableLiveData<Boolean>(false)
-    internal val hasPreviousOrder: LiveData<Boolean> = mHasPreviousOrder
-
     private val mProducts = MutableLiveData<List<ConfigProduct>>()
     internal val products: LiveData<List<ConfigProduct>> = mProducts
 
@@ -113,16 +112,9 @@ class OrderManager(private val mapper: ObjectMapper) : 
ConfigurationReceiver {
             orders[nextId] = MutableLiveOrder(nextId, productsByCategory)
         }
         val currentOrder = order(currentId)
-        val stillHasPrevious = if (currentOrder.isEmpty()) {
-            val wasFirst = orders.keys.first() == currentId
-            orders.remove(currentId)
-            !wasFirst  // we still have a previous order if the removed one 
wasn't the first
-        } else {
-            currentOrder.lastAddedProduct = null  // not needed anymore and 
would select it
-            true  // we did not remove anything, so our next order still has a 
previous
-        }
+        if (currentOrder.isEmpty()) orders.remove(currentId)
+        else currentOrder.lastAddedProduct = null  // not needed anymore and 
it would get selected
         mCurrentOrderId.value = nextId
-        mHasPreviousOrder.value = stillHasPrevious
     }
 
     @UiThread
@@ -146,7 +138,14 @@ class OrderManager(private val mapper: ObjectMapper) : 
ConfigurationReceiver {
         if (currentOrder.isEmpty()) orders.remove(currentId)
         else currentOrder.lastAddedProduct = null
         mCurrentOrderId.value = previousId
-        mHasPreviousOrder.value = previousId != orders.keys.first()
+    }
+
+    fun hasPreviousOrder(currentOrderId: Int): Boolean {
+        return currentOrderId != orders.keys.first()
+    }
+
+    fun hasNextOrder(currentOrderId: Int) = 
map(order(currentOrderId).restartState) { state ->
+        state == ENABLED || currentOrderId != orders.keys.last()
     }
 
     internal fun setCurrentCategory(category: Category) {
@@ -166,11 +165,8 @@ class OrderManager(private val mapper: ObjectMapper) : 
ConfigurationReceiver {
     @UiThread
     internal fun onOrderPaid(orderId: Int) {
         if (currentOrderId.value == orderId) {
-            if (hasPreviousOrder.value!!) previousOrder()
-            else {
-                nextOrder()
-                mHasPreviousOrder.value = false
-            }
+            if (hasPreviousOrder(orderId)) previousOrder()
+            else nextOrder()
         }
         orders.remove(orderId)
     }

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



reply via email to

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