@@ -8,42 +8,53 @@ import CocoaLumberjack
88
99class OrderDetailsViewController : UIViewController {
1010
11- // MARK: - Properties
12-
11+ /// Main TableView.
12+ ///
1313 @IBOutlet weak var tableView : UITableView !
14- var viewModel : OrderDetailsViewModel ! {
15- didSet {
16- reloadSections ( )
17- reloadTableViewIfPossible ( )
18- }
19- }
2014
15+ /// Pull To Refresh Support.
16+ ///
2117 private lazy var refreshControl : UIRefreshControl = {
2218 let refreshControl = UIRefreshControl ( )
2319 refreshControl. addTarget ( self , action: #selector( pullToRefresh) , for: . valueChanged)
2420 return refreshControl
2521 } ( )
2622
27- private var orderNotes : [ OrderNoteViewModel ] = [ ] {
28- didSet {
29- reloadSections ( )
30- reloadTableViewIfPossible ( )
31- }
32- }
33-
23+ /// Indicates if the Billing details should be rendered.
24+ ///
3425 private var displaysBillingDetails = false {
3526 didSet {
3627 reloadSections ( )
3728 }
3829 }
39- private var sections = [ Section] ( )
4030
4131 /// EntityListener: Update / Deletion Notifications.
4232 ///
4333 private lazy var entityListener : EntityListener < Order > = {
4434 return EntityListener ( storageManager: AppDelegate . shared. storageManager, readOnlyEntity: viewModel. order)
4535 } ( )
4636
37+ /// Sections to be rendered
38+ ///
39+ private var sections = [ Section] ( )
40+
41+ /// Order to be rendered!
42+ ///
43+ var viewModel : OrderDetailsViewModel ! {
44+ didSet {
45+ reloadSections ( )
46+ reloadTableViewIfPossible ( )
47+ }
48+ }
49+
50+ /// Order Notes
51+ ///
52+ private var orderNotes : [ OrderNote ] = [ ] {
53+ didSet {
54+ reloadSections ( )
55+ reloadTableViewIfPossible ( )
56+ }
57+ }
4758
4859
4960 // MARK: - View Lifecycle
@@ -61,11 +72,6 @@ class OrderDetailsViewController: UIViewController {
6172 super. viewWillAppear ( animated)
6273 syncNotes ( )
6374 }
64-
65- override func viewWillDisappear( _ animated: Bool ) {
66- super. viewWillDisappear ( animated)
67- self . navigationController? . isNavigationBarHidden = false
68- }
6975}
7076
7177
@@ -101,6 +107,7 @@ private extension OrderDetailsViewController {
101107 guard let `self` = self else {
102108 return
103109 }
110+
104111 self . viewModel = OrderDetailsViewModel ( order: order)
105112 }
106113
@@ -360,11 +367,9 @@ private extension OrderDetailsViewController {
360367 return
361368 }
362369
363- cell. iconButton. setImage ( note. iconImage, for: . normal)
364- cell. iconButton. backgroundColor = note. iconColor
365- cell. dateCreated = note. formattedDateCreated
366- cell. statusText = note. statusText
367- cell. contents = note. contents
370+ cell. isCustomerNote = note. isCustomerNote
371+ cell. dateCreated = note. dateCreated. toString ( dateStyle: . medium, timeStyle: . short)
372+ cell. contents = note. note
368373 }
369374
370375 func configurePayment( cell: PaymentTableViewCell ) {
@@ -434,7 +439,7 @@ private extension OrderDetailsViewController {
434439
435440 // MARK: - Get order note
436441 //
437- func note( at indexPath: IndexPath ) -> OrderNoteViewModel ? {
442+ func note( at indexPath: IndexPath ) -> OrderNote ? {
438443 // We need to subtract 1 here because the first order note row is the "Add Order" cell
439444 let noteIndex = indexPath. row - 1
440445 guard orderNotes. indices. contains ( noteIndex) else {
@@ -474,7 +479,7 @@ private extension OrderDetailsViewController {
474479 return
475480 }
476481
477- self ? . orderNotes = orderNotes. map { OrderNoteViewModel ( with : $0 ) }
482+ self ? . orderNotes = orderNotes
478483 WooAnalytics . shared. track ( . orderNotesLoaded, withProperties: [ " id " : self ? . viewModel. order. orderID ?? 0 ] )
479484 onCompletion ? ( nil )
480485 }
@@ -526,7 +531,7 @@ extension OrderDetailsViewController: UITableViewDataSource {
526531 func tableView( _ tableView: UITableView , heightForHeaderInSection section: Int ) -> CGFloat {
527532 if sections [ section] . title == nil {
528533 // iOS 11 table bug. Must return a tiny value to collapse `nil` or `empty` section headers.
529- return CGFloat . leastNonzeroMagnitude
534+ return . leastNonzeroMagnitude
530535 }
531536
532537 return UITableView . automaticDimension
@@ -548,18 +553,13 @@ extension OrderDetailsViewController: UITableViewDataSource {
548553 }
549554
550555 func tableView( _ tableView: UITableView , heightForFooterInSection section: Int ) -> CGFloat {
551- // Give the table some breathing room
552- let lastSection = sections. count - 1
553- if section == lastSection {
554- return UITableView . automaticDimension
555- }
556+ let lastSectionIndex = sections. count - 1
556557
557- guard let _ = sections [ section] . footer else {
558- // iOS 11 table bug. Must return a tiny value to collapse `nil` or `empty` section footers.
559- return CGFloat . leastNonzeroMagnitude
558+ if sections [ section] . footer != nil || section == lastSectionIndex {
559+ return UITableView . automaticDimension
560560 }
561561
562- return UITableView . automaticDimension
562+ return . leastNonzeroMagnitude
563563 }
564564
565565 func tableView( _ tableView: UITableView , viewForFooterInSection section: Int ) -> UIView ? {
0 commit comments