@@ -10,6 +10,10 @@ public struct CallbackEvents {
1010}
1111
1212public struct CallbackManager {
13+ struct Observer < Event: CallbackEvent > {
14+ let handler : ( Event . Info ) -> Void
15+ }
16+
1317 fileprivate var observers = [ Any] ( )
1418
1519 public init ( ) { }
@@ -24,28 +28,28 @@ public struct CallbackManager {
2428 _: Event . Type = Event . self,
2529 _ handler: @escaping ( Event . Info ) -> Void
2630 ) {
27- observers. append ( handler)
31+ observers. append ( Observer < Event > ( handler: handler ) )
2832 }
2933
3034 public mutating func on< Event: CallbackEvent > (
3135 _: KeyPath < CallbackEvents , Event . Type > ,
3236 _ handler: @escaping ( Event . Info ) -> Void
3337 ) {
34- observers. append ( handler)
38+ observers. append ( Observer < Event > ( handler: handler ) )
3539 }
3640
3741 public func send< Event: CallbackEvent > ( _ event: Event ) {
38- for case let observer as ( ( Event . Info ) -> Void ) in observers {
39- observer ( event. info)
42+ for case let observer as Observer < Event > in observers {
43+ observer. handler ( event. info)
4044 }
4145 }
4246
4347 func send< Event: CallbackEvent > (
4448 _: KeyPath < CallbackEvents , Event . Type > ,
4549 _ info: Event . Info
4650 ) {
47- for case let observer as ( ( Event . Info ) -> Void ) in observers {
48- observer ( info)
51+ for case let observer as Observer < Event > in observers {
52+ observer. handler ( info)
4953 }
5054 }
5155}
0 commit comments