@@ -30,15 +30,28 @@ public extension DependencyValues {
3030 set { self [ ToastControllerDependencyKey . self] = newValue }
3131 }
3232
33- var toast : ( String , ToastType ) -> Void { toastController. toast }
33+ var toast : ( String , ToastType ) -> Void {
34+ return { content, type in
35+ toastController. toast ( content: content, type: type, namespace: nil )
36+ }
37+ }
38+
39+ var namespacedToast : ( String , ToastType , String ) -> Void {
40+ return {
41+ content, type, namespace in
42+ toastController. toast ( content: content, type: type, namespace: namespace)
43+ }
44+ }
3445}
3546
3647public class ToastController : ObservableObject {
3748 public struct Message : Identifiable , Equatable {
49+ public var namespace : String ?
3850 public var id : UUID
3951 public var type : ToastType
4052 public var content : Text
41- public init ( id: UUID , type: ToastType , content: Text ) {
53+ public init ( id: UUID , type: ToastType , namespace: String ? = nil , content: Text ) {
54+ self . namespace = namespace
4255 self . id = id
4356 self . type = type
4457 self . content = content
@@ -51,9 +64,9 @@ public class ToastController: ObservableObject {
5164 self . messages = messages
5265 }
5366
54- public func toast( content: String , type: ToastType ) {
67+ public func toast( content: String , type: ToastType , namespace : String ? = nil ) {
5568 let id = UUID ( )
56- let message = Message ( id: id, type: type, content: Text ( content) )
69+ let message = Message ( id: id, type: type, namespace : namespace , content: Text ( content) )
5770
5871 Task { @MainActor in
5972 withAnimation ( . easeInOut( duration: 0.2 ) ) {
@@ -73,7 +86,7 @@ public struct Toast: ReducerProtocol {
7386 public struct State : Equatable {
7487 var isObservingToastController = false
7588 public var messages : [ Message ] = [ ]
76-
89+
7790 public init ( messages: [ Message ] = [ ] ) {
7891 self . messages = messages
7992 }
@@ -82,13 +95,13 @@ public struct Toast: ReducerProtocol {
8295 public enum Action : Equatable {
8396 case start
8497 case updateMessages( [ Message ] )
85- case toast( String , ToastType )
98+ case toast( String , ToastType , String ? )
8699 }
87100
88101 @Dependency ( \. toastController) var toastController
89102
90103 struct CancelID : Hashable { }
91-
104+
92105 public init ( ) { }
93106
94107 public var body : some ReducerProtocol < State , Action > {
@@ -114,8 +127,8 @@ public struct Toast: ReducerProtocol {
114127 case let . updateMessages( messages) :
115128 state. messages = messages
116129 return . none
117- case let . toast( content, type) :
118- toastController. toast ( content: content, type: type)
130+ case let . toast( content, type, namespace ) :
131+ toastController. toast ( content: content, type: type, namespace : namespace )
119132 return . none
120133 }
121134 }
0 commit comments