@@ -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 )
@@ -46,14 +47,17 @@ class AptabaseClient {
46
47
public func startPolling( ) {
47
48
stopPolling ( )
48
49
49
- flushTimer = Timer . scheduledTimer ( timeInterval: flushInterval, target: self , selector: #selector( flushSync ) , userInfo: nil , repeats: true )
50
+ flushTimer = Timer . scheduledTimer ( timeInterval: flushInterval, target: self , selector: #selector( timerFlushSync ) , userInfo: nil , repeats: true )
50
51
}
51
52
52
53
public func stopPolling( ) {
53
54
flushTimer? . invalidate ( )
54
55
flushTimer = nil
55
-
56
- flushSync ( )
56
+
57
+ Task {
58
+ await flush ( )
59
+ }
60
+
57
61
}
58
62
59
63
public func flush( ) async {
@@ -66,12 +70,13 @@ class AptabaseClient {
66
70
return String ( epochInSeconds * 100000000 + random)
67
71
}
68
72
69
- @objc private func flushSync( ) {
70
- let semaphore = DispatchSemaphore ( value: 0 )
71
- Task {
72
- await self . flush ( )
73
- semaphore. signal ( )
73
+ @objc private func timerFlushSync( ) {
74
+ if !pauseFlushTimer {
75
+ Task {
76
+ self . pauseFlushTimer = true
77
+ await self . flush ( )
78
+ self . pauseFlushTimer = false
79
+ }
74
80
}
75
- semaphore. wait ( )
76
81
}
77
82
}
0 commit comments