From 6cab4a4094fa307e88c0a65fef47268b3ec11246 Mon Sep 17 00:00:00 2001 From: Fabian Bender Date: Tue, 16 Sep 2025 12:36:51 +0200 Subject: [PATCH 1/3] add new property action to price modifiers to check if it was a replace or an add --- core/src/main/java/io/snabble/sdk/checkout/CheckoutApi.kt | 1 + .../sdk/ui/cart/shoppingcart/product/model/ProductItem.kt | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/io/snabble/sdk/checkout/CheckoutApi.kt b/core/src/main/java/io/snabble/sdk/checkout/CheckoutApi.kt index d47e059bf..00dec7fd8 100644 --- a/core/src/main/java/io/snabble/sdk/checkout/CheckoutApi.kt +++ b/core/src/main/java/io/snabble/sdk/checkout/CheckoutApi.kt @@ -263,6 +263,7 @@ data class LineItem( data class PriceModifier( val name: String? = null, val price: Int = 0, + val action: String? = null ) data class ExitToken( diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/ProductItem.kt b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/ProductItem.kt index bb33e1067..209d1d9ee 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/ProductItem.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/ProductItem.kt @@ -42,7 +42,8 @@ internal data class ProductItem( .sumOf { it.price * quantity } .let(::abs) } - return totalPrice + depositPrice + sumOfModifierPriceDiscounts + return if (item.lineItem?.priceModifiers?.firstOrNull()?.action == "replace") item.lineItem?.price + ?: 0 else totalPrice + depositPrice + sumOfModifierPriceDiscounts } fun getPriceWithDiscountsApplied(): Int { From 5816e6d319b3a405358e5d2c447b45315665d4b4 Mon Sep 17 00:00:00 2001 From: Fabian Bender Date: Tue, 16 Sep 2025 15:27:53 +0200 Subject: [PATCH 2/3] resume scanner after prices have been updated from the backend with a half a second delay for better ux --- .../java/io/snabble/sdk/shoppingcart/ShoppingCart.kt | 8 ++++++++ .../io/snabble/sdk/shoppingcart/ShoppingCartUpdater.kt | 1 + .../data/listener/DefaultShoppingCartListener.kt | 2 ++ .../shoppingcart/data/listener/ShoppingCartListener.kt | 1 + .../data/listener/SimpleShoppingCartListener.kt | 2 ++ .../io/snabble/sdk/ui/scanner/ScannerBottomSheetView.kt | 1 + .../java/io/snabble/sdk/ui/scanner/SelfScanningView.java | 9 +++++++++ 7 files changed, 24 insertions(+) diff --git a/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCart.kt b/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCart.kt index 23541c832..836bd6245 100644 --- a/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCart.kt +++ b/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCart.kt @@ -882,6 +882,14 @@ class ShoppingCart( } } + fun notifyOnlinePriceUpdate(list: ShoppingCart) { + Dispatch.mainThread { + listeners?.forEach { listener -> + listener.onOnlinePricesUpdated(list) + } + } + } + private fun notifyTaxationChanged(list: ShoppingCart, taxation: Taxation) { Dispatch.mainThread { listeners?.forEach { listener -> diff --git a/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCartUpdater.kt b/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCartUpdater.kt index b4c320af4..910759e84 100644 --- a/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCartUpdater.kt +++ b/core/src/main/java/io/snabble/sdk/shoppingcart/ShoppingCartUpdater.kt @@ -177,6 +177,7 @@ internal class ShoppingCartUpdater( invalidItemIds = null checkLimits() notifyPriceUpdate(this) + notifyOnlinePriceUpdate(this) } } diff --git a/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/DefaultShoppingCartListener.kt b/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/DefaultShoppingCartListener.kt index 463719571..76cfb26d2 100644 --- a/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/DefaultShoppingCartListener.kt +++ b/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/DefaultShoppingCartListener.kt @@ -24,6 +24,8 @@ interface DefaultShoppingCartListener : ShoppingCartListener { override fun onPricesUpdated(cart: ShoppingCart) { } + override fun onOnlinePricesUpdated(cart: ShoppingCart) {} + override fun onCheckoutLimitReached(cart: ShoppingCart) { } diff --git a/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/ShoppingCartListener.kt b/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/ShoppingCartListener.kt index 14054619e..57fcab4b3 100644 --- a/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/ShoppingCartListener.kt +++ b/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/ShoppingCartListener.kt @@ -15,6 +15,7 @@ interface ShoppingCartListener { fun onItemRemoved(cart: ShoppingCart, item: ShoppingCart.Item, pos: Int) fun onProductsUpdated(cart: ShoppingCart) fun onPricesUpdated(cart: ShoppingCart) + fun onOnlinePricesUpdated(cart: ShoppingCart) fun onCheckoutLimitReached(cart: ShoppingCart) fun onOnlinePaymentLimitReached(cart: ShoppingCart) fun onTaxationChanged(cart: ShoppingCart, taxation: Taxation) diff --git a/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/SimpleShoppingCartListener.kt b/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/SimpleShoppingCartListener.kt index e1f24bd09..e9fad2886 100644 --- a/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/SimpleShoppingCartListener.kt +++ b/core/src/main/java/io/snabble/sdk/shoppingcart/data/listener/SimpleShoppingCartListener.kt @@ -20,6 +20,8 @@ abstract class SimpleShoppingCartListener : ShoppingCartListener { override fun onPricesUpdated(cart: ShoppingCart) = onChanged(cart) + override fun onOnlinePricesUpdated(cart: ShoppingCart) = onChanged(cart) + override fun onTaxationChanged(cart: ShoppingCart, taxation: Taxation) = onChanged(cart) override fun onCheckoutLimitReached(cart: ShoppingCart) {} diff --git a/ui/src/main/java/io/snabble/sdk/ui/scanner/ScannerBottomSheetView.kt b/ui/src/main/java/io/snabble/sdk/ui/scanner/ScannerBottomSheetView.kt index cede2bd34..a7cbcaf86 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/scanner/ScannerBottomSheetView.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/scanner/ScannerBottomSheetView.kt @@ -143,6 +143,7 @@ class ScannerBottomSheetView @JvmOverloads constructor( override fun onProductsUpdated(cart: ShoppingCart) {} override fun onPricesUpdated(cart: ShoppingCart) = checkSaleStop() + override fun onOnlinePricesUpdated(cart: ShoppingCart) {} override fun onCheckoutLimitReached(cart: ShoppingCart) {} override fun onOnlinePaymentLimitReached(cart: ShoppingCart) {} override fun onTaxationChanged(cart: ShoppingCart, taxation: Taxation) {} diff --git a/ui/src/main/java/io/snabble/sdk/ui/scanner/SelfScanningView.java b/ui/src/main/java/io/snabble/sdk/ui/scanner/SelfScanningView.java index b3c8f0bba..77acb2a2e 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/scanner/SelfScanningView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/scanner/SelfScanningView.java @@ -8,6 +8,8 @@ import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; +import android.os.Handler; +import android.os.Looper; import android.os.SystemClock; import android.os.Vibrator; import android.text.InputType; @@ -602,6 +604,13 @@ public void onQuantityChanged(@NonNull ShoppingCart cart, ShoppingCart.Item item showScanMessage(item.getProduct(), false); } + @Override + public void onOnlinePricesUpdated(@NonNull ShoppingCart cart) { + Handler infoHandler = new Handler(Looper.getMainLooper()); + infoHandler.postDelayed(() -> resumeBarcodeScanner(), 500); + } + + @Override public void onChanged(@NonNull ShoppingCart cart) { updateCartButton(); From 58204a3d3333412fc6e5c251559fc17e7f9f05f7 Mon Sep 17 00:00:00 2001 From: Fabian Bender Date: Tue, 16 Sep 2025 15:29:00 +0200 Subject: [PATCH 3/3] update CHANGELOG.md --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4e3d55ec..8b2487570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,11 @@ All notable changes to this project will be documented in this file. ### Removed ### Fixed +## [0.82.2] +### Fixed +* Unlock frozen camera after scan +* Wrong applied price modifiers +* ## [0.82.1] ### Changed * Dependency updates