CustomNotification.swift 1.1 KB

12345678910111213141516171819202122232425262728
  1. import Combine
  2. import Foundation
  3. extension Notification.Name {
  4. static let willUpdateOverrideConfiguration = Notification.Name("willUpdateOverrideConfiguration")
  5. static let didUpdateOverrideConfiguration = Notification.Name("didUpdateOverrideConfiguration")
  6. static let willUpdateTempTargetConfiguration = Notification.Name("willUpdateTempTargetConfiguration")
  7. static let didUpdateTempTargetConfiguration = Notification.Name("didUpdateTempTargetConfiguration")
  8. static let liveActivityOrderDidChange = Notification.Name("liveActivityOrderDidChange")
  9. }
  10. func awaitNotification(_ name: Notification.Name) async {
  11. await withCheckedContinuation { continuation in
  12. var cancellable: AnyCancellable?
  13. // Create a Combine publisher that listens for notifications
  14. cancellable = Foundation.NotificationCenter.default
  15. .publisher(for: name)
  16. .sink { _ in
  17. // When the notification is received, resume the awaiting task
  18. continuation.resume()
  19. // Cancel the subscription after the continuation has resumed
  20. cancellable?.cancel()
  21. }
  22. }
  23. }