mirror of
https://github.com/home-assistant/iOS.git
synced 2026-02-18 14:41:28 -06:00
## Summary Allows attachments to be loaded on-the-fly in the content extension if they are not present. ## Link to pull request in Documentation repository Documentation: home-assistant/companion.home-assistant#510 ## Any other notes - Adds `lazy` as an option to the `attachment` dictionary. When true, this prevents the attachment from being downloaded except when displayed in the content extension. This is similar, but not identical, to hide-thumbnail. Hiding the thumbnail still uses the internal storage of the notifications which are limited to e.g. 50mb. However, we'd still want to pre-load those attachments even if the thumbnail is hidden. - Retries non-lazy attachments which failed due to a network error when the content extension opens.
55 lines
1.6 KiB
Swift
55 lines
1.6 KiB
Swift
import Foundation
|
|
import PromiseKit
|
|
import UIKit
|
|
import UserNotificationsUI
|
|
|
|
class NotificationErrorViewController: UIViewController, NotificationCategory {
|
|
let label = UILabel()
|
|
|
|
required init(notification: UNNotification, attachmentURL: URL?) throws {
|
|
fatalError("not meant to be used in the list of potentials, just directly set")
|
|
}
|
|
|
|
init(error: Error) {
|
|
super.init(nibName: nil, bundle: nil)
|
|
label.text = error.localizedDescription
|
|
}
|
|
|
|
@available(*, unavailable)
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
label.numberOfLines = 0
|
|
label.textAlignment = .center
|
|
|
|
if #available(iOS 13, *) {
|
|
label.textColor = .systemRed
|
|
} else {
|
|
label.textColor = .red
|
|
}
|
|
|
|
view.addSubview(label)
|
|
label.translatesAutoresizingMaskIntoConstraints = false
|
|
NSLayoutConstraint.activate([
|
|
label.topAnchor.constraint(equalTo: view.topAnchor),
|
|
label.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
label.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
label.bottomAnchor.constraint(equalTo: view.bottomAnchor),
|
|
])
|
|
}
|
|
|
|
func start() -> Promise<Void> {
|
|
.value(())
|
|
}
|
|
|
|
var mediaPlayPauseButtonType: UNNotificationContentExtensionMediaPlayPauseButtonType { .none }
|
|
var mediaPlayPauseButtonFrame: CGRect?
|
|
var mediaPlayPauseButtonTintColor: UIColor?
|
|
func mediaPlay() {}
|
|
func mediaPause() {}
|
|
}
|