[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.