38 lines
876 B
Swift
38 lines
876 B
Swift
//
|
|
// UIAlertController.swift
|
|
// Mastodon
|
|
//
|
|
|
|
import UIKit
|
|
|
|
// Reference:
|
|
// https://nshipster.com/swift-foundation-error-protocols/
|
|
extension UIAlertController {
|
|
convenience init(
|
|
_ error: Error,
|
|
preferredStyle: UIAlertController.Style
|
|
) {
|
|
let title: String
|
|
let message: String?
|
|
if let error = error as? LocalizedError {
|
|
title = error.errorDescription ?? "Unknown Error"
|
|
message = [
|
|
error.failureReason,
|
|
error.recoverySuggestion
|
|
]
|
|
.compactMap { $0 }
|
|
.joined(separator: " ")
|
|
} else {
|
|
title = "Internal Error"
|
|
message = error.localizedDescription
|
|
}
|
|
|
|
self.init(
|
|
title: title,
|
|
message: message,
|
|
preferredStyle: preferredStyle
|
|
)
|
|
}
|
|
}
|
|
|