From 5631f849b806fccee5c582e76cad8ff80cf8ba63 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 12 Sep 2018 10:51:42 -0300 Subject: [PATCH 1/5] OrdersViewController: Nukes FSM Error State --- .../Orders/OrdersViewController.swift | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift index 1e3a6ceec61..20def65cc42 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift @@ -226,9 +226,6 @@ extension OrdersViewController: SyncingCoordinatorDelegate { self.state.transitionToResultsUpdatedState(isEmpty: self.isEmpty, isFiltered: self.isFiltered) return } - - DDLogError("⛔️ Error synchronizing orders: \(error)") - self.state.transitionToErrorState() } StoresManager.shared.dispatch(action) @@ -282,18 +279,9 @@ private extension OrdersViewController { resultsController.startForwardingEvents(to: self.tableView) } - /// Displays the Error State Overlay. /// - 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() } - overlayView.attach(to: view) } /// Displays the Empty State Overlay. @@ -435,8 +423,6 @@ private extension OrdersViewController { displayEmptyUnfilteredOverlay() case .emptyFiltered: displayEmptyFilteredOverlay() - case .error: - displayErrorOverlay() case .placeholder: displayPlaceholderOrders() case .syncing: @@ -452,8 +438,6 @@ private extension OrdersViewController { removeAllOverlays() case .emptyUnfiltered: removeAllOverlays() - case .error: - removeAllOverlays() case .placeholder: removePlaceholderOrders() case .syncing: @@ -495,7 +479,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. @@ -504,12 +487,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. /// From ecfeac5c07655d8ef1a1cb2d8e700f8723fbab36 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 12 Sep 2018 10:52:00 -0300 Subject: [PATCH 2/5] OrdersViewController: Notice as Error Handler --- .../Orders/OrdersViewController.swift | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift index 20def65cc42..81765c60f01 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift @@ -218,14 +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 - } + self.state.transitionToResultsUpdatedState(isEmpty: self.isEmpty, isFiltered: self.isFiltered) + onCompletion?(error == nil) } StoresManager.shared.dispatch(action) @@ -279,9 +278,17 @@ private extension OrdersViewController { resultsController.startForwardingEvents(to: self.tableView) } + /// Displays the Error Notice. /// + 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) } + AppDelegate.shared.noticePresenter.enqueue(notice: notice) } /// Displays the Empty State Overlay. From ff3772d5469bc0c3a7cbd1ce4938c28e8dc4f17b Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 12 Sep 2018 11:36:43 -0300 Subject: [PATCH 3/5] Revert to this commit to test Empty Unfiltered State --- .../Orders/OrdersViewController.swift | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift index 81765c60f01..198ef73a12e 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift @@ -498,15 +498,15 @@ private extension OrdersViewController { /// Transitions to `.results` / `.emptyFiltered` / `.emptyUnfiltered` accordingly. /// mutating func transitionToResultsUpdatedState(isEmpty: Bool, isFiltered: Bool) { - if isEmpty == false { - self = .results - return - } - - if isFiltered { - self = .emptyFiltered - return - } +// if isEmpty == false { +// self = .results +// return +// } +// +// if isFiltered { +// self = .emptyFiltered +// return +// } self = .emptyUnfiltered } From 3546d24a8c013bb49b01ce934ad206f19bf79952 Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 12 Sep 2018 11:37:25 -0300 Subject: [PATCH 4/5] Revert to this commit to test Error State --- .../Orders/OrdersViewController.swift | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift index 198ef73a12e..f251947e17e 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift @@ -218,10 +218,10 @@ extension OrdersViewController: SyncingCoordinatorDelegate { return } - if let error = error { - DDLogError("⛔️ Error synchronizing orders: \(error)") +// if let error = error { +// DDLogError("⛔️ Error synchronizing orders: \(error)") self.displaySyncingErrorNotice(retryPageNumber: pageNumber) - } +// } self.state.transitionToResultsUpdatedState(isEmpty: self.isEmpty, isFiltered: self.isFiltered) onCompletion?(error == nil) @@ -498,15 +498,15 @@ private extension OrdersViewController { /// Transitions to `.results` / `.emptyFiltered` / `.emptyUnfiltered` accordingly. /// mutating func transitionToResultsUpdatedState(isEmpty: Bool, isFiltered: Bool) { -// if isEmpty == false { -// self = .results -// return -// } -// -// if isFiltered { -// self = .emptyFiltered -// return -// } + if isEmpty == false { + self = .results + return + } + + if isFiltered { + self = .emptyFiltered + return + } self = .emptyUnfiltered } From 41790a449c495941b41c82cccd5cc57138f7fd4c Mon Sep 17 00:00:00 2001 From: Jorge Leandro Perez Date: Wed, 12 Sep 2018 11:38:27 -0300 Subject: [PATCH 5/5] OrdersViewController: Reverts Testing Code --- .../Classes/ViewRelated/Orders/OrdersViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift index f251947e17e..81765c60f01 100644 --- a/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift +++ b/WooCommerce/Classes/ViewRelated/Orders/OrdersViewController.swift @@ -218,10 +218,10 @@ extension OrdersViewController: SyncingCoordinatorDelegate { return } -// if let error = error { -// DDLogError("⛔️ Error synchronizing orders: \(error)") + if let error = error { + DDLogError("⛔️ Error synchronizing orders: \(error)") self.displaySyncingErrorNotice(retryPageNumber: pageNumber) -// } + } self.state.transitionToResultsUpdatedState(isEmpty: self.isEmpty, isFiltered: self.isFiltered) onCompletion?(error == nil)