Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 13 additions & 29 deletions WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -218,17 +218,13 @@ extension OrdersViewController: SyncingCoordinatorDelegate {
return
}

defer {
onCompletion?(error == nil)
if let error = error {
DDLogError("⛔️ Error synchronizing orders: \(error)")
self.displaySyncingErrorNotice(retryPageNumber: pageNumber)
}

guard let error = error else {
self.state.transitionToResultsUpdatedState(isEmpty: self.isEmpty, isFiltered: self.isFiltered)
return
}

DDLogError("⛔️ Error synchronizing orders: \(error)")
self.state.transitionToErrorState()
self.state.transitionToResultsUpdatedState(isEmpty: self.isEmpty, isFiltered: self.isFiltered)
onCompletion?(error == nil)
}

StoresManager.shared.dispatch(action)
Expand Down Expand Up @@ -282,18 +278,17 @@ private extension OrdersViewController {
resultsController.startForwardingEvents(to: self.tableView)
}

/// Displays the Error State Overlay.
/// Displays the Error Notice.
///
func displayErrorOverlay() {
let overlayView: OverlayMessageView = OverlayMessageView.instantiateFromNib()
overlayView.messageImage = .errorStateImage
overlayView.messageText = NSLocalizedString("Unable to load the orders list", comment: "Order List Loading Error")
overlayView.actionText = NSLocalizedString("Retry", comment: "Retry Action")
overlayView.onAction = { [weak self] in
self?.sync()
func displaySyncingErrorNotice(retryPageNumber: Int) {
let title = NSLocalizedString("Orders", comment: "Orders Notice Title")
let message = NSLocalizedString("Unable to refresh list", comment: "Refresh Action Failed")
let actionTitle = NSLocalizedString("Retry", comment: "Retry Action")
let notice = Notice(title: title, message: message, feedbackType: .error, actionTitle: actionTitle) { [weak self] in
self?.sync(pageNumber: retryPageNumber)
}

overlayView.attach(to: view)
AppDelegate.shared.noticePresenter.enqueue(notice: notice)
}

/// Displays the Empty State Overlay.
Expand Down Expand Up @@ -435,8 +430,6 @@ private extension OrdersViewController {
displayEmptyUnfilteredOverlay()
case .emptyFiltered:
displayEmptyFilteredOverlay()
case .error:
displayErrorOverlay()
case .placeholder:
displayPlaceholderOrders()
case .syncing:
Expand All @@ -452,8 +445,6 @@ private extension OrdersViewController {
removeAllOverlays()
case .emptyUnfiltered:
removeAllOverlays()
case .error:
removeAllOverlays()
case .placeholder:
removePlaceholderOrders()
case .syncing:
Expand Down Expand Up @@ -495,7 +486,6 @@ private extension OrdersViewController {
case results
case emptyUnfiltered
case emptyFiltered
case error

/// Should be called before Sync'ing. Transitions to either `results` or `placeholder` state, depending on whether if
/// we've got cached results, or not.
Expand All @@ -504,12 +494,6 @@ private extension OrdersViewController {
self = isEmpty ? .placeholder : .syncing
}

/// Transitions to the Error State.
///
mutating func transitionToErrorState() {
self = .error
}

/// Should be called whenever the results are updated: after Sync'ing (or after applying a filter).
/// Transitions to `.results` / `.emptyFiltered` / `.emptyUnfiltered` accordingly.
///
Expand Down