Skip to content

Commit 2d5e3d6

Browse files
committed
Ensure product and variation lists are not cleared after resync
1 parent 2085fe6 commit 2d5e3d6

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Creation/NewOrderViewModel.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,7 @@ final class NewOrderViewModel: ObservableObject {
9595

9696
/// Products list
9797
///
98-
private var allProducts: [Product] {
99-
productsResultsController.fetchedObjects
100-
}
98+
private var allProducts: [Product] = []
10199

102100
/// Product Variations Results Controller.
103101
///
@@ -109,9 +107,7 @@ final class NewOrderViewModel: ObservableObject {
109107

110108
/// Product Variations list
111109
///
112-
private var allProductVariations: [ProductVariation] {
113-
productVariationsResultsController.fetchedObjects
114-
}
110+
private var allProductVariations: [ProductVariation] = []
115111

116112
/// View model for the product list
117113
///
@@ -549,6 +545,10 @@ private extension NewOrderViewModel {
549545
/// Adds a selected product (from the product list) to the order.
550546
///
551547
func addProductToOrder(_ product: Product) {
548+
if !allProducts.contains(product) {
549+
allProducts.append(product)
550+
}
551+
552552
let input = OrderSyncProductInput(product: .product(product), quantity: 1)
553553
orderSynchronizer.setProduct.send(input)
554554

@@ -558,6 +558,10 @@ private extension NewOrderViewModel {
558558
/// Adds a selected product variation (from the product list) to the order.
559559
///
560560
func addProductVariationToOrder(_ variation: ProductVariation) {
561+
if !allProductVariations.contains(variation) {
562+
allProductVariations.append(variation)
563+
}
564+
561565
let input = OrderSyncProductInput(product: .variation(variation), quantity: 1)
562566
orderSynchronizer.setProduct.send(input)
563567

@@ -777,6 +781,7 @@ private extension NewOrderViewModel {
777781
func updateProductsResultsController() {
778782
do {
779783
try productsResultsController.performFetch()
784+
allProducts = productsResultsController.fetchedObjects
780785
} catch {
781786
DDLogError("⛔️ Error fetching products for new order: \(error)")
782787
}
@@ -787,6 +792,7 @@ private extension NewOrderViewModel {
787792
func updateProductVariationsResultsController() {
788793
do {
789794
try productVariationsResultsController.performFetch()
795+
allProductVariations = productVariationsResultsController.fetchedObjects
790796
} catch {
791797
DDLogError("⛔️ Error fetching product variations for new order: \(error)")
792798
}

0 commit comments

Comments
 (0)