@@ -11,6 +11,7 @@ class AptabaseClient {
11
11
private let dispatcher : EventDispatcher
12
12
private let env : EnvironmentInfo
13
13
private let flushInterval : Double
14
+ private var pauseFlushTimer : Bool = false
14
15
15
16
init ( appKey: String , baseUrl: String , env: EnvironmentInfo , options: InitOptions ? ) {
16
17
flushInterval = options? . flushInterval ?? ( env. isDebug ? 2.0 : 60.0 )
@@ -45,14 +46,17 @@ class AptabaseClient {
45
46
public func startPolling( ) {
46
47
stopPolling ( )
47
48
48
- flushTimer = Timer . scheduledTimer ( timeInterval: flushInterval, target: self , selector: #selector( flushSync ) , userInfo: nil , repeats: true )
49
+ flushTimer = Timer . scheduledTimer ( timeInterval: flushInterval, target: self , selector: #selector( timerFlushSync ) , userInfo: nil , repeats: true )
49
50
}
50
51
51
52
public func stopPolling( ) {
52
53
flushTimer? . invalidate ( )
53
54
flushTimer = nil
54
-
55
- flushSync ( )
55
+
56
+ Task {
57
+ await flush ( )
58
+ }
59
+
56
60
}
57
61
58
62
public func flush( ) async {
@@ -65,12 +69,13 @@ class AptabaseClient {
65
69
return String ( epochInSeconds * 100000000 + random)
66
70
}
67
71
68
- @objc private func flushSync( ) {
69
- let semaphore = DispatchSemaphore ( value: 0 )
70
- Task {
71
- await self . flush ( )
72
- semaphore. signal ( )
72
+ @objc private func timerFlushSync( ) {
73
+ if !pauseFlushTimer {
74
+ Task {
75
+ self . pauseFlushTimer = true
76
+ await self . flush ( )
77
+ self . pauseFlushTimer = false
78
+ }
73
79
}
74
- semaphore. wait ( )
75
80
}
76
81
}
0 commit comments