Skip to content

Commit 60d2b67

Browse files
authored
Resume scanner after adding a cart item and fix the way price modifiers are applied (Apps-2489 and APPS-2491) (#262)
1 parent 73592c9 commit 60d2b67

File tree

10 files changed

+32
-1
lines changed

10 files changed

+32
-1
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ All notable changes to this project will be documented in this file.
88
### Removed
99
### Fixed
1010

11+
## [0.82.2]
12+
### Fixed
13+
* Unlock frozen camera after scan
14+
* Wrong applied price modifiers
15+
*
1116
## [0.82.1]
1217
### Changed
1318
* Dependency updates

core/src/main/java/io/snabble/sdk/checkout/CheckoutApi.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ data class LineItem(
263263
data class PriceModifier(
264264
val name: String? = null,
265265
val price: Int = 0,
266+
val action: String? = null
266267
)
267268

268269
data class ExitToken(

core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCart.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,14 @@ class ShoppingCart(
882882
}
883883
}
884884

885+
fun notifyOnlinePriceUpdate(list: ShoppingCart) {
886+
Dispatch.mainThread {
887+
listeners?.forEach { listener ->
888+
listener.onOnlinePricesUpdated(list)
889+
}
890+
}
891+
}
892+
885893
private fun notifyTaxationChanged(list: ShoppingCart, taxation: Taxation) {
886894
Dispatch.mainThread {
887895
listeners?.forEach { listener ->

core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCartUpdater.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ internal class ShoppingCartUpdater(
177177
invalidItemIds = null
178178
checkLimits()
179179
notifyPriceUpdate(this)
180+
notifyOnlinePriceUpdate(this)
180181
}
181182
}
182183

core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/DefaultShoppingCartListener.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ interface DefaultShoppingCartListener : ShoppingCartListener {
2424
override fun onPricesUpdated(cart: ShoppingCart) {
2525
}
2626

27+
override fun onOnlinePricesUpdated(cart: ShoppingCart) {}
28+
2729
override fun onCheckoutLimitReached(cart: ShoppingCart) {
2830
}
2931

core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/ShoppingCartListener.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ interface ShoppingCartListener {
1515
fun onItemRemoved(cart: ShoppingCart, item: ShoppingCart.Item, pos: Int)
1616
fun onProductsUpdated(cart: ShoppingCart)
1717
fun onPricesUpdated(cart: ShoppingCart)
18+
fun onOnlinePricesUpdated(cart: ShoppingCart)
1819
fun onCheckoutLimitReached(cart: ShoppingCart)
1920
fun onOnlinePaymentLimitReached(cart: ShoppingCart)
2021
fun onTaxationChanged(cart: ShoppingCart, taxation: Taxation)

core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/SimpleShoppingCartListener.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ abstract class SimpleShoppingCartListener : ShoppingCartListener {
2020

2121
override fun onPricesUpdated(cart: ShoppingCart) = onChanged(cart)
2222

23+
override fun onOnlinePricesUpdated(cart: ShoppingCart) = onChanged(cart)
24+
2325
override fun onTaxationChanged(cart: ShoppingCart, taxation: Taxation) = onChanged(cart)
2426

2527
override fun onCheckoutLimitReached(cart: ShoppingCart) {}

ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/ProductItem.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ internal data class ProductItem(
4242
.sumOf { it.price * quantity }
4343
.let(::abs)
4444
}
45-
return totalPrice + depositPrice + sumOfModifierPriceDiscounts
45+
return if (item.lineItem?.priceModifiers?.firstOrNull()?.action == "replace") item.lineItem?.price
46+
?: 0 else totalPrice + depositPrice + sumOfModifierPriceDiscounts
4647
}
4748

4849
fun getPriceWithDiscountsApplied(): Int {

ui/src/main/java/io/snabble/sdk/ui/scanner/ScannerBottomSheetView.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ class ScannerBottomSheetView @JvmOverloads constructor(
143143

144144
override fun onProductsUpdated(cart: ShoppingCart) {}
145145
override fun onPricesUpdated(cart: ShoppingCart) = checkSaleStop()
146+
override fun onOnlinePricesUpdated(cart: ShoppingCart) {}
146147
override fun onCheckoutLimitReached(cart: ShoppingCart) {}
147148
override fun onOnlinePaymentLimitReached(cart: ShoppingCart) {}
148149
override fun onTaxationChanged(cart: ShoppingCart, taxation: Taxation) {}

ui/src/main/java/io/snabble/sdk/ui/scanner/SelfScanningView.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import android.content.Context;
99
import android.content.pm.PackageManager;
1010
import android.content.res.Resources;
11+
import android.os.Handler;
12+
import android.os.Looper;
1113
import android.os.SystemClock;
1214
import android.os.Vibrator;
1315
import android.text.InputType;
@@ -602,6 +604,13 @@ public void onQuantityChanged(@NonNull ShoppingCart cart, ShoppingCart.Item item
602604
showScanMessage(item.getProduct(), false);
603605
}
604606

607+
@Override
608+
public void onOnlinePricesUpdated(@NonNull ShoppingCart cart) {
609+
Handler infoHandler = new Handler(Looper.getMainLooper());
610+
infoHandler.postDelayed(() -> resumeBarcodeScanner(), 500);
611+
}
612+
613+
605614
@Override
606615
public void onChanged(@NonNull ShoppingCart cart) {
607616
updateCartButton();

0 commit comments

Comments
 (0)