@@ -40,8 +40,12 @@ class OrdersViewController: UIViewController {
4040
4141 /// OrderStatus that must be matched by retrieved orders.
4242 ///
43- private var statusFilter : OrderStatus ? {
43+ var statusFilter : OrderStatus ? {
4444 didSet {
45+ guard isViewLoaded else {
46+ return
47+ }
48+
4549 guard oldValue? . rawValue != statusFilter? . rawValue else {
4650 return
4751 }
@@ -93,8 +97,11 @@ class OrdersViewController: UIViewController {
9397 override func viewDidLoad( ) {
9498 super. viewDidLoad ( )
9599
100+ refreshTitle ( )
101+ refreshResultsPredicate ( )
96102 configureSyncingCoordinator ( )
97103 configureNavigation ( )
104+ configureTabBarItem ( )
98105 configureTableView ( )
99106 configureResultsController ( )
100107 }
@@ -111,8 +118,22 @@ class OrdersViewController: UIViewController {
111118//
112119private extension OrdersViewController {
113120
121+ func refreshTitle( ) {
122+ guard let filter = statusFilter? . rawValue. capitalized else {
123+ navigationItem. title = NSLocalizedString ( " Orders " , comment: " Orders Title " )
124+ return
125+ }
126+
127+ navigationItem. title = NSLocalizedString ( " Orders: \( filter) " , comment: " Orders Title " )
128+ }
129+
130+ func refreshResultsPredicate( ) {
131+ resultsController. predicate = statusFilter. map { NSPredicate ( format: " status = %@ " , $0. rawValue) }
132+ tableView. setContentOffset ( . zero, animated: false )
133+ tableView. reloadData ( )
134+ }
135+
114136 func configureNavigation( ) {
115- title = NSLocalizedString ( " Orders " , comment: " Orders title " )
116137 let rightBarButton = UIBarButtonItem ( image: Gridicon . iconOfType ( . menus) ,
117138 style: . plain,
118139 target: self ,
@@ -127,6 +148,10 @@ private extension OrdersViewController {
127148 navigationItem. backBarButtonItem = UIBarButtonItem ( title: String ( ) , style: . plain, target: nil , action: nil )
128149 }
129150
151+ func configureTabBarItem( ) {
152+ tabBarItem. title = NSLocalizedString ( " Orders " , comment: " Orders title " )
153+ }
154+
130155 func configureTableView( ) {
131156 view. backgroundColor = StyleManager . tableViewBackgroundColor
132157 tableView. backgroundColor = StyleManager . tableViewBackgroundColor
@@ -181,11 +206,12 @@ extension OrdersViewController {
181206//
182207private extension OrdersViewController {
183208
184- private func didChangeFilter( newFilter: OrderStatus ? ) {
209+ func didChangeFilter( newFilter: OrderStatus ? ) {
210+ // Display the Filter in the Title
211+ refreshTitle ( )
212+
185213 // Filter right away the cached orders
186- resultsController. predicate = newFilter. map { NSPredicate ( format: " status = %@ " , $0. rawValue) }
187- tableView. setContentOffset ( . zero, animated: false )
188- tableView. reloadData ( )
214+ refreshResultsPredicate ( )
189215
190216 // Drop Cache (If Needed) + Re-Sync First Page
191217 ensureStoredOrdersAreReset { [ weak self] in
0 commit comments