Add first-class Actions management (#63)
This commit is contained in:
@@ -46,9 +46,14 @@ func errorAlert(_ message: String) -> UIAlertController {
|
||||
return alert
|
||||
}
|
||||
|
||||
func errorMessage(_ error: Error) -> String {
|
||||
if case let GotchaError.Message(message) = error { return message }
|
||||
return error.localizedDescription
|
||||
}
|
||||
|
||||
extension UIViewController {
|
||||
func show(error: Error) {
|
||||
present(errorAlert(error.localizedDescription), animated: true)
|
||||
present(errorAlert(errorMessage(error)), animated: true)
|
||||
}
|
||||
|
||||
func beginNavigationLoading(_ spinner: UIActivityIndicatorView) {
|
||||
@@ -392,3 +397,31 @@ func separator() -> UIView {
|
||||
line.heightAnchor.constraint(equalToConstant: 1 / UIScreen.main.scale).isActive = true
|
||||
return line
|
||||
}
|
||||
|
||||
@MainActor
|
||||
func setPanelTitle(_ viewController: UIViewController, _ title: String, server: String?) {
|
||||
viewController.title = title
|
||||
viewController.navigationItem.titleView = nil
|
||||
if #available(iOS 26.0, *) {
|
||||
viewController.navigationItem.subtitle = server.flatMap { $0.isEmpty ? nil : $0 }
|
||||
return
|
||||
}
|
||||
guard let server, !server.isEmpty else { return }
|
||||
let titleLabel = UILabel()
|
||||
titleLabel.text = title
|
||||
titleLabel.font = .preferredFont(forTextStyle: .headline)
|
||||
titleLabel.adjustsFontForContentSizeCategory = true
|
||||
titleLabel.textAlignment = .center
|
||||
let serverLabel = UILabel()
|
||||
serverLabel.text = server
|
||||
serverLabel.font = .preferredFont(forTextStyle: .caption1)
|
||||
serverLabel.adjustsFontForContentSizeCategory = true
|
||||
serverLabel.textColor = .secondaryLabel
|
||||
serverLabel.textAlignment = .center
|
||||
let labels = UIStackView(arrangedSubviews: [titleLabel, serverLabel])
|
||||
labels.axis = .vertical
|
||||
labels.spacing = 0
|
||||
labels.alignment = .center
|
||||
labels.accessibilityLabel = "\(title), \(server)"
|
||||
viewController.navigationItem.titleView = labels
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user