29 lines
745 B
Swift
29 lines
745 B
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
enum AlertMessage: Identifiable {
|
|
case info(title: String, body: String)
|
|
case error(error: Error)
|
|
|
|
var id: Int {
|
|
switch self {
|
|
case .info(let title, let body):
|
|
return title.hashValue + body.hashValue
|
|
case .error(let error):
|
|
return error.localizedDescription.hashValue
|
|
}
|
|
}
|
|
}
|
|
|
|
extension Alert {
|
|
init(_ message: AlertMessage) {
|
|
switch message {
|
|
case .info(let title, let body):
|
|
self.init(title: Text(title), message: Text(body))
|
|
case .error(let error):
|
|
let msg = (error as NSError).displayMessage
|
|
self.init(title: Text(msg.title), message: Text(msg.body))
|
|
}
|
|
}
|
|
}
|