Skip to content

Commit 7e6000c

Browse files
committed
Fixed status issue with OrderLoaderVC
1 parent 5450939 commit 7e6000c

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

WooCommerce/Classes/ViewRelated/Orders/OrderLoaderViewController.swift

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,20 @@ class OrderLoaderViewController: UIViewController {
2929
}
3030
}
3131

32+
/// ResultsController: Handles all things order status
33+
///
34+
private lazy var statusResultsController: ResultsController<StorageOrderStatus> = {
35+
let storageManager = AppDelegate.shared.storageManager
36+
let predicate = NSPredicate(format: "siteID == %lld", siteID)
37+
let descriptor = NSSortDescriptor(key: "slug", ascending: true)
38+
return ResultsController<StorageOrderStatus>(storageManager: storageManager, matching: predicate, sortedBy: [descriptor])
39+
}()
40+
41+
/// The current list of order statuses for the default site
42+
///
43+
private var currentSiteStatuses: [OrderStatus] {
44+
return statusResultsController.fetchedObjects
45+
}
3246

3347
// MARK: - Initializers
3448

@@ -49,6 +63,7 @@ class OrderLoaderViewController: UIViewController {
4963
override func viewDidLoad() {
5064
super.viewDidLoad()
5165

66+
configureResultsController()
5267
configureNavigationItem()
5368
configureSpinner()
5469
configureMainView()
@@ -89,6 +104,13 @@ private extension OrderLoaderViewController {
89104
//
90105
private extension OrderLoaderViewController {
91106

107+
/// Setup: Results Controller
108+
///
109+
func configureResultsController() {
110+
// Order status FRC
111+
try? statusResultsController.performFetch()
112+
}
113+
92114
/// Setup: Navigation
93115
///
94116
func configureNavigationItem() {
@@ -160,7 +182,8 @@ private extension OrderLoaderViewController {
160182
}
161183

162184
// Setup the DetailsViewController
163-
detailsViewController.viewModel = OrderDetailsViewModel(order: order)
185+
let orderStatus = lookUpOrderStatus(for: order.statusKey)
186+
detailsViewController.viewModel = OrderDetailsViewModel(order: order, orderStatus: orderStatus)
164187

165188
// Attach
166189
addChild(detailsViewController)
@@ -197,6 +220,20 @@ private extension OrderLoaderViewController {
197220
}
198221

199222

223+
// MARK: - Private Helpers
224+
//
225+
private extension OrderLoaderViewController {
226+
227+
func lookUpOrderStatus(for statusKey: String) -> OrderStatus? {
228+
for orderStatus in currentSiteStatuses where orderStatus.slug == statusKey {
229+
return orderStatus
230+
}
231+
232+
return nil
233+
}
234+
}
235+
236+
200237
// MARK: - Finite State Machine Management
201238
//
202239
private extension OrderLoaderViewController {

0 commit comments

Comments
 (0)