From 4bdaa0d572cc699e50a0297528622e3659544718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Thu, 21 Nov 2024 11:38:50 +0100 Subject: [PATCH 1/4] Add model data for global unique id in products and variations --- .../main/kotlin/com/woocommerce/android/model/Product.kt | 5 +++++ .../com/woocommerce/android/model/ProductVariation.kt | 6 ++++++ .../android/model/SubscriptionProductVariation.kt | 9 +++++++++ .../com/woocommerce/android/ui/products/ProductHelper.kt | 1 + 4 files changed, 21 insertions(+) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/model/Product.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/model/Product.kt index 3fb096e13351..208d61926bd2 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/model/Product.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/model/Product.kt @@ -56,6 +56,7 @@ data class Product( val isStockManaged: Boolean, val stockQuantity: Double, val sku: String, + val globalUniqueId: String, val shippingClass: String, val shippingClassId: Long, val isDownloadable: Boolean, @@ -116,6 +117,7 @@ data class Product( isSoldIndividually == product.isSoldIndividually && reviewsAllowed == product.reviewsAllowed && sku == product.sku && + globalUniqueId == product.globalUniqueId && slug == product.slug && type == product.type && name.fastStripHtml() == product.name.fastStripHtml() && @@ -292,6 +294,7 @@ data class Product( shortDescription = updatedProduct.shortDescription, name = updatedProduct.name, sku = updatedProduct.sku, + globalUniqueId = updatedProduct.globalUniqueId, slug = updatedProduct.slug, status = updatedProduct.status, catalogVisibility = updatedProduct.catalogVisibility, @@ -415,6 +418,7 @@ fun Product.toDataModel(storedProductModel: WCProductModel? = null): WCProductMo it.shortDescription = shortDescription it.name = name it.sku = sku + it.globalUniqueId = globalUniqueId it.slug = slug it.status = status.toString() it.catalogVisibility = catalogVisibility.toString() @@ -513,6 +517,7 @@ fun WCProductModel.toAppModel(): Product { isStockManaged = this.manageStock, stockQuantity = this.stockQuantity, sku = this.sku, + globalUniqueId = this.globalUniqueId, slug = this.slug, length = this.length.toFloatOrNull() ?: 0f, width = this.width.toFloatOrNull() ?: 0f, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/model/ProductVariation.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/model/ProductVariation.kt index c4f3b9eb11a0..b8ba8bce7893 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/model/ProductVariation.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/model/ProductVariation.kt @@ -28,6 +28,7 @@ open class ProductVariation( open val remoteProductId: Long, open val remoteVariationId: Long, open val sku: String, + open val globalUniqueId: String, open val image: Image?, open val price: BigDecimal?, open val regularPrice: BigDecimal?, @@ -76,6 +77,7 @@ open class ProductVariation( remoteVariationId == variation.remoteVariationId && remoteProductId == variation.remoteProductId && sku == variation.sku && + globalUniqueId == variation.globalUniqueId && image?.id == variation.image?.id && regularPrice isEquivalentTo variation.regularPrice && salePrice isEquivalentTo variation.salePrice && @@ -136,6 +138,7 @@ open class ProductVariation( it.remoteProductId = remoteProductId it.remoteVariationId = remoteVariationId it.sku = sku + it.globalUniqueId = globalUniqueId it.image = imageToJson() it.regularPrice = if (regularPrice.isNotSet()) "" else regularPrice.toString() it.salePrice = if (salePrice.isNotSet()) "" else salePrice.toString() @@ -189,6 +192,7 @@ open class ProductVariation( remoteProductId: Long = this.remoteProductId, remoteVariationId: Long = this.remoteVariationId, sku: String = this.sku, + globalUniqueId: String = this.globalUniqueId, image: Image? = this.image, price: BigDecimal? = this.price, regularPrice: BigDecimal? = this.regularPrice, @@ -223,6 +227,7 @@ open class ProductVariation( remoteProductId = remoteProductId, remoteVariationId = remoteVariationId, sku = sku, + globalUniqueId = globalUniqueId, image = image, price = price, regularPrice = regularPrice, @@ -281,6 +286,7 @@ fun WCProductVariationModel.toAppModel(): ProductVariation { remoteProductId = this.remoteProductId, remoteVariationId = this.remoteVariationId, sku = this.sku, + globalUniqueId = this.globalUniqueId, image = this.getImageModel()?.let { Product.Image( it.id, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/model/SubscriptionProductVariation.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/model/SubscriptionProductVariation.kt index 60a4677805a6..f6886f796a97 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/model/SubscriptionProductVariation.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/model/SubscriptionProductVariation.kt @@ -20,6 +20,7 @@ class SubscriptionProductVariation( override val remoteProductId: Long, override val remoteVariationId: Long, override val sku: String, + override val globalUniqueId: String, override val image: Product.Image?, override val price: BigDecimal?, override val regularPrice: BigDecimal?, @@ -53,6 +54,7 @@ class SubscriptionProductVariation( remoteProductId = remoteProductId, remoteVariationId = remoteVariationId, sku = sku, + globalUniqueId = globalUniqueId, image = image, price = price, regularPrice = regularPrice, @@ -89,6 +91,7 @@ class SubscriptionProductVariation( remoteProductId = model.remoteProductId, remoteVariationId = model.remoteVariationId, sku = model.sku, + globalUniqueId = model.globalUniqueId, image = model.getImageModel()?.let { Product.Image( it.id, @@ -137,6 +140,7 @@ class SubscriptionProductVariation( remoteVariationId == variation.remoteVariationId && remoteProductId == variation.remoteProductId && sku == variation.sku && + globalUniqueId == variation.globalUniqueId && image?.id == variation.image?.id && regularPrice isEquivalentTo variation.regularPrice && salePrice isEquivalentTo variation.salePrice && @@ -172,6 +176,7 @@ class SubscriptionProductVariation( result = 31 * result + remoteProductId.hashCode() result = 31 * result + remoteVariationId.hashCode() result = 31 * result + sku.hashCode() + result = 31 * result + globalUniqueId.hashCode() result = 31 * result + (image?.hashCode() ?: 0) result = 31 * result + (price?.hashCode() ?: 0) result = 31 * result + (regularPrice?.hashCode() ?: 0) @@ -208,6 +213,7 @@ class SubscriptionProductVariation( remoteProductId: Long, remoteVariationId: Long, sku: String, + globalUniqueId: String, image: Product.Image?, price: BigDecimal?, regularPrice: BigDecimal?, @@ -242,6 +248,7 @@ class SubscriptionProductVariation( remoteProductId = remoteProductId, remoteVariationId = remoteVariationId, sku = sku, + globalUniqueId = globalUniqueId, image = image, price = price, regularPrice = regularPrice, @@ -280,6 +287,7 @@ class SubscriptionProductVariation( remoteProductId: Long = this.remoteProductId, remoteVariationId: Long = this.remoteVariationId, sku: String = this.sku, + globalUniqueId: String = this.globalUniqueId, image: Image? = this.image, price: BigDecimal? = this.price, regularPrice: BigDecimal? = this.regularPrice, @@ -315,6 +323,7 @@ class SubscriptionProductVariation( remoteProductId = remoteProductId, remoteVariationId = remoteVariationId, sku = sku, + globalUniqueId = globalUniqueId, image = image, price = price, regularPrice = regularPrice, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductHelper.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductHelper.kt index 592ad2f4b6f7..7b725f140182 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductHelper.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductHelper.kt @@ -64,6 +64,7 @@ object ProductHelper { isStockManaged = false, stockQuantity = 0.0, sku = "", + globalUniqueId = "", slug = "", length = 0f, width = 0f, From cd8bdc131d96f812b31bfe1b34e0d5b3a935c975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Thu, 21 Nov 2024 16:38:27 +0100 Subject: [PATCH 2/4] Set value from model --- .../android/ui/products/ProductInventoryFragment.kt | 7 +++++++ .../android/ui/products/ProductInventoryViewModel.kt | 1 + .../ui/products/details/ProductDetailCardBuilder.kt | 1 + .../ui/products/variations/VariationDetailCardBuilder.kt | 1 + 4 files changed, 10 insertions(+) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryFragment.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryFragment.kt index 48687375d01d..72bd9a93efcd 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryFragment.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryFragment.kt @@ -107,6 +107,13 @@ class ProductInventoryFragment : binding.productSku.text = it } } + + new.inventoryData.globalUniqueId?.takeIfNotEqualTo(old?.inventoryData?.globalUniqueId) { + if (binding.productGlobalUniqueId.text != it) { + binding.productGlobalUniqueId.text = it + } + } + new.inventoryData.stockQuantity?.takeIfNotEqualTo(old?.inventoryData?.stockQuantity) { val quantity = StringUtils.formatCountDecimal(it, forInput = true) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryViewModel.kt index 1ee5ea20aca7..52f4f9c0bdb3 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/ProductInventoryViewModel.kt @@ -164,6 +164,7 @@ class ProductInventoryViewModel @Inject constructor( @Parcelize data class InventoryData( val sku: String? = null, + val globalUniqueId: String? = null, val isStockManaged: Boolean? = null, val isSoldIndividually: Boolean? = null, val stockStatus: ProductStockStatus? = null, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilder.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilder.kt index 13ed2ca0cf28..783eb50732cf 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilder.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/details/ProductDetailCardBuilder.kt @@ -454,6 +454,7 @@ class ProductDetailCardBuilder( ViewProductInventory( InventoryData( sku = this.sku, + globalUniqueId = this.globalUniqueId, isStockManaged = this.isStockManaged, stockStatus = this.stockStatus, stockQuantity = this.stockQuantity, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailCardBuilder.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailCardBuilder.kt index cf6672288b1c..533e7a582e52 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailCardBuilder.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/products/variations/VariationDetailCardBuilder.kt @@ -322,6 +322,7 @@ class VariationDetailCardBuilder( ViewInventory( InventoryData( sku = this.sku, + globalUniqueId = this.globalUniqueId, isStockManaged = this.isStockManaged, stockStatus = this.stockStatus, stockQuantity = this.stockQuantity, From 81102961778a390a0a4b9c615b75af8f2fe152be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Fri, 22 Nov 2024 10:24:45 +0100 Subject: [PATCH 3/4] Add missing parameter --- .../com/woocommerce/android/ui/products/VariationTestUtils.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/VariationTestUtils.kt b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/VariationTestUtils.kt index 72a54be46171..12bf606b37e2 100644 --- a/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/VariationTestUtils.kt +++ b/WooCommerce/src/test/kotlin/com/woocommerce/android/ui/products/VariationTestUtils.kt @@ -9,6 +9,7 @@ fun generateVariation(): ProductVariation { remoteProductId = 1, remoteVariationId = 2, sku = "sku", + globalUniqueId = "globalUniqueId", image = null, price = null, regularPrice = null, From 4c1cb755602ec1939c395a0d1ce8bd4919858a72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ce=CC=81sar=20Vargas=20Casaseca?= Date: Wed, 27 Nov 2024 09:50:03 +0100 Subject: [PATCH 4/4] Update Flux-C version --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 24a024214fae..22aaadbf2665 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -86,7 +86,7 @@ stripe-terminal = '3.7.1' tinder-statemachine = '0.2.0' wiremock = '2.26.3' wordpress-aztec = 'v2.1.4' -wordpress-fluxc = 'trunk-3b731c31d9f8ca9765a1de9ec8d4d064b88ec30a' +wordpress-fluxc = 'trunk-3d095f6f0a41e50faab2038a9f195f536b6e4520' wordpress-login = '1.19.0' wordpress-libaddressinput = '0.0.2' wordpress-mediapicker = '0.3.1'