@@ -10,13 +10,35 @@ import SwiftUI
1010
1111private struct SwiftUINotficationState {
1212 static var notificationId : UUID ? = nil
13+ static let internalStyleName = " __swiftui-extension-style "
1314}
1415
1516extension View {
1617 public typealias NotificationPrepareStyleClosure = ( StatusBarNotificationStyle ) -> Void
1718
1819 nonisolated public func notification( isPresented: Binding < Bool > , style: NotificationPrepareStyleClosure ? = nil , @ViewBuilder viewBuilder: ( ) -> some View ) -> some View {
1920 let np = NotificationPresenter . shared
21+ var styleName : String ? = nil
22+ if let style {
23+ styleName = np. addStyle ( named: SwiftUINotficationState . internalStyleName) { s in
24+ let _ = style ( s)
25+ return s
26+ }
27+ }
28+ return notification ( isPresented: isPresented, styleName: styleName, viewBuilder: viewBuilder)
29+ }
30+
31+ nonisolated public func notification( isPresented: Binding < Bool > , includedStyle: IncludedStatusBarNotificationStyle ? = nil , @ViewBuilder viewBuilder: ( ) -> some View ) -> some View {
32+ let np = NotificationPresenter . shared
33+ var styleName : String ? = nil
34+ if let includedStyle {
35+ styleName = np. addStyle ( named: SwiftUINotficationState . internalStyleName, usingStyle: includedStyle) { return $0 }
36+ }
37+ return notification ( isPresented: isPresented, styleName: styleName, viewBuilder: viewBuilder)
38+ }
39+
40+ nonisolated public func notification( isPresented: Binding < Bool > , styleName: String ? = nil , @ViewBuilder viewBuilder: ( ) -> some View ) -> some View {
41+ let np = NotificationPresenter . shared
2042
2143 // dismiss if needed
2244 if !isPresented. wrappedValue && np. isVisible && np. activeNotificationId == SwiftUINotficationState . notificationId {
@@ -25,15 +47,7 @@ extension View {
2547
2648 // present if needed
2749 if isPresented. wrappedValue && SwiftUINotficationState . notificationId == nil {
28- if let style {
29- let name = np. addStyle ( named: " __swiftui-extension-style " ) { s in
30- let _ = style ( s)
31- return s
32- }
33- np. presentSwiftView ( styleName: name, viewBuilder: viewBuilder)
34- } else {
35- np. presentSwiftView ( viewBuilder: viewBuilder)
36- }
50+ np. presentSwiftView ( styleName: styleName, viewBuilder: viewBuilder)
3751
3852 // remember id of our presentation
3953 SwiftUINotficationState . notificationId = np. activeNotificationId
0 commit comments