From 174c0df9a70b90b388e02c58f37e338789e8f5ae Mon Sep 17 00:00:00 2001 From: Fabian Bender Date: Wed, 1 Oct 2025 11:45:50 +0200 Subject: [PATCH] WIP: add remote search --- CHANGELOG.md | 4 +++ .../shoppingcart/ShoppingCartViewModel.kt | 32 +++++++++++-------- .../product/model/DiscountItem.kt | 3 +- .../shoppingcart/product/widget/Product.kt | 2 +- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c67176ae14..da993bc458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ All notable changes to this project will be documented in this file. ### Removed ### Fixed +## [0.82.3] +### Fixed +* ui: Show replace Modifiers as negative discount + ## [0.82.2] ### Added * core: Add function to search for products by a prefix diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/ShoppingCartViewModel.kt b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/ShoppingCartViewModel.kt index 99f2a1d601..0af1434292 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/ShoppingCartViewModel.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/ShoppingCartViewModel.kt @@ -198,19 +198,24 @@ class ShoppingCartViewModel : ViewModel() { val name = priceModifier.name.orEmpty() val weightUnit = item.item.lineItem?.weightUnit val referenceUnit = item.item.lineItem?.referenceUnit - val modifiedPrice = if (weightUnit != null && referenceUnit != null) { - priceModifier - .convertPriceModifier( - amount = item.quantity, - weightedUnit = weightUnit, - referencedUnit = referenceUnit - ) - .let { priceFormatter?.format(it).orEmpty() } - } else { - (priceModifier.price * item.quantity).let { - priceFormatter?.format(it).orEmpty() + val modifiedPrice = + if (priceModifier.action == "replace") { + priceFormatter?.format( + (item.item.lineItem?.price ?: 0) - priceModifier.price + ).orEmpty() + } else if (weightUnit != null && referenceUnit != null) { + priceModifier + .convertPriceModifier( + amount = item.quantity, + weightedUnit = weightUnit, + referencedUnit = referenceUnit + ) + .let { priceFormatter?.format(it).orEmpty() } + } else { + (priceModifier.price * item.quantity).let { + priceFormatter?.format(it).orEmpty() + } } - } // Set this to zero because the backend already subtracted the discount from the total price: val discountValue = 0 modifiedPrice.let { @@ -218,7 +223,8 @@ class ShoppingCartViewModel : ViewModel() { DiscountItem( name = name, discount = modifiedPrice, - discountValue = discountValue + discountValue = discountValue, + useNegativeValue = priceModifier.action == "replace" ) ) } diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/DiscountItem.kt b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/DiscountItem.kt index d080d43769..690a27d7b1 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/DiscountItem.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/model/DiscountItem.kt @@ -3,5 +3,6 @@ package io.snabble.sdk.ui.cart.shoppingcart.product.model internal data class DiscountItem( val name: String, val discount: String, - val discountValue: Int + val discountValue: Int, + val useNegativeValue: Boolean = false ) diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/widget/Product.kt b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/widget/Product.kt index e44cb41d78..999f4a1c01 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/widget/Product.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/cart/shoppingcart/product/widget/Product.kt @@ -90,7 +90,7 @@ private fun DiscountItemWidget(it: DiscountItem) { verticalAlignment = Alignment.CenterVertically ) { Text( - it.discount, + if (it.useNegativeValue) "-${it.discount}" else it.discount, style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurface )