@@ -18,6 +18,7 @@ import mParticle_Apple_SDK
1818class RoktEventHandler : NSObject , FlutterStreamHandler {
1919
2020 private var eventListeners : [ String : [ FlutterEventSink ] ] = [ : ]
21+ private let eventQueue = DispatchQueue ( label: " com.mparticle.rokt.event.queue " )
2122 private let EVENT_CHANNEL_NAME = " MPRoktEvents "
2223
2324 init ( messenger: FlutterBinaryMessenger ) {
@@ -31,21 +32,25 @@ class RoktEventHandler: NSObject, FlutterStreamHandler {
3132 }
3233
3334 func onListen( withArguments arguments: Any ? , eventSink: @escaping FlutterEventSink ) -> FlutterError ? {
34- let key = String ( describing: arguments ?? " nil " )
35- var sinks = eventListeners [ key] ?? [ ]
36- sinks. append ( eventSink)
37- eventListeners [ key] = sinks
35+ eventQueue. sync {
36+ let key = String ( describing: arguments ?? " nil " )
37+ var sinks = eventListeners [ key] ?? [ ]
38+ sinks. append ( eventSink)
39+ eventListeners [ key] = sinks
40+ }
3841 return nil
3942 }
4043
4144 func onCancel( withArguments arguments: Any ? ) -> FlutterError ? {
42- let key = String ( describing: arguments ?? " nil " )
43- if var sinks = eventListeners [ key] , !sinks. isEmpty {
44- sinks. removeLast ( )
45- if sinks. isEmpty {
46- eventListeners. removeValue ( forKey: key)
47- } else {
48- eventListeners [ key] = sinks
45+ eventQueue. sync {
46+ let key = String ( describing: arguments ?? " nil " )
47+ if var sinks = eventListeners [ key] , !sinks. isEmpty {
48+ sinks. removeLast ( )
49+ if sinks. isEmpty {
50+ eventListeners. removeValue ( forKey: key)
51+ } else {
52+ eventListeners [ key] = sinks
53+ }
4954 }
5055 }
5156 return nil
@@ -81,8 +86,14 @@ class RoktEventHandler: NSObject, FlutterStreamHandler {
8186 break
8287 }
8388
84- self . eventListeners. values. joined ( ) . forEach { listener in
85- listener ( params)
89+ let allSinks = self . eventQueue. sync {
90+ return Array ( self . eventListeners. values. joined ( ) )
91+ }
92+
93+ allSinks. forEach { listener in
94+ DispatchQueue . main. async {
95+ listener ( params)
96+ }
8697 }
8798 }
8899 }
0 commit comments