Cleanup the background task that pauses the SDK when resigning active (#903)

* checking if the stop taskHandle is finished before stopping the bg task

* stopping the sync in background now works properly

* this will prevent the case in which if the app suspends and then is immediately foregrounded again, we do not start the sync

* now works as intended

* code improvement

* improved the code a bit
This commit is contained in:
Mauro
2023-05-19 10:28:30 +02:00
committed by GitHub
parent 03dece7bf4
commit 4e46c01945
5 changed files with 46 additions and 16 deletions
@@ -152,16 +152,30 @@ class ClientProxy: ClientProxyProtocol {
return nil
}
}
var isSyncing: Bool {
slidingSyncObserverToken != nil
}
func startSync() {
MXLog.info("Starting sync")
guard slidingSyncObserverToken == nil else {
guard !isSyncing else {
return
}
slidingSyncObserverToken = slidingSync?.sync()
}
func stopSync(completionHandler: () -> Void) {
guard let slidingSyncObserverToken else {
MXLog.info("No sync is present")
return
}
stopSync()
while !slidingSyncObserverToken.isFinished() { }
completionHandler()
}
func stopSync() {
MXLog.info("Stopping sync")
slidingSyncObserverToken?.cancel()
@@ -178,7 +192,7 @@ class ClientProxy: ClientProxyProtocol {
}
}
}
func createDirectRoom(with userID: String) async -> Result<String, ClientProxyError> {
await Task.dispatch(on: clientQueue) {
do {