Skip to content

Instantly share code, notes, and snippets.

@bill350
Last active June 18, 2018 21:48
Show Gist options
  • Select an option

  • Save bill350/d4a3a00069b0af3d42d151e09502bffd to your computer and use it in GitHub Desktop.

Select an option

Save bill350/d4a3a00069b0af3d42d151e09502bffd to your computer and use it in GitHub Desktop.
// MARK: - ViewController Default implementation
extension Failable where Self: ViewController {
func showError<T: ErrorDisplayable>(_ error: Swift.Error?, errorView: T.Type, _ reloadable: Reloadable) {
self.errorView = errorView.show(fromView: self.view, insets: .zero, animated: true, completion: nil)
if var errorViewRetryable = self.errorView as? ErrorRetryable {
errorViewRetryable.retry = { reloadable.reloadData() }
errorViewRetryable.message = error?.localizedMessage
}
}
func showError(_ error: Swift.Error?, _ reloadable: Reloadable & Failable) {
if let reloadable = reloadable as? ViewController {
reloadable.progressView?.hide()
}
if !reloadable.hasData {
if let errorView = reloadable.errorScreenType?.errorView {
self.showError(error, errorView: errorView, reloadable)
} else {
self.showAlertController(message: error?.localizedMessage ?? L10n.commonErrorMessage, retryCompletion: {
reloadable.reloadData()
})
}
} else {
var errorMessage: String
if reloadable.errorContext == .dataOriented {
errorMessage = L10n.commonErrorStatusOldData
SwiftMessages.showAlert(title: errorMessage)
} else {
if let errorView = reloadable.errorScreenType?.errorView {
self.showError(error, errorView: errorView, reloadable)
} else {
//Anything
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment