Skip to content

Commit 0eae2a7

Browse files
authored
Merge pull request #7142 from woocommerce/issue/7132-fix-missing-products-request
[Order Details] Fix race condition for missing products request
2 parents 0e063b9 + 15c27e8 commit 0eae2a7

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

WooCommerce/Classes/ViewModels/Order Details/OrderDetailsViewModel.swift

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,23 @@ extension OrderDetailsViewModel {
192192
syncState = .syncing
193193

194194
group.enter()
195-
syncOrder { _ in
196-
group.leave()
197-
}
195+
syncOrder { [weak self] _ in
196+
defer {
197+
group.leave()
198+
}
198199

199-
group.enter()
200-
syncProducts { _ in
201-
group.leave()
202-
}
200+
// Products require order.items data, so sync them only after the order is loaded
201+
guard let self = self else { return }
203202

204-
group.enter()
205-
syncProductVariations { _ in
206-
group.leave()
203+
group.enter()
204+
self.syncProducts { _ in
205+
group.leave()
206+
}
207+
208+
group.enter()
209+
self.syncProductVariations { _ in
210+
group.leave()
211+
}
207212
}
208213

209214
group.enter()

Yosemite/Yosemite/Stores/ProductStore.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,12 @@ private extension ProductStore {
211211
}
212212
}
213213

214+
// Do not trigger API request for empty array of items
215+
guard !missingIDs.isEmpty else {
216+
onCompletion(nil)
217+
return
218+
}
219+
214220
remote.loadProducts(for: order.siteID, by: missingIDs) { [weak self] result in
215221
switch result {
216222
case .success(let products):

0 commit comments

Comments
 (0)