diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerStartBackup.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerStartBackup.swift index 254bc6b9268f03c9c01d6ed8086d2c1e55c1fd89..1512d36100b25a17b2b75175520edf94940ef5a2 100644 --- a/Sources/XXMessengerClient/Messenger/Functions/MessengerStartBackup.swift +++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerStartBackup.swift @@ -1,3 +1,4 @@ +import Foundation import XCTestDynamicOverlay import XXClient @@ -33,24 +34,26 @@ extension MessengerStartBackup { let paramsData = try params.encode() let paramsString = String(data: paramsData, encoding: .utf8)! var didAddParams = false - func addParams() { - guard let backup = env.backup() else { return } - backup.addJSON(paramsString) - didAddParams = true - } + var semaphore: DispatchSemaphore? = .init(value: 0) let backup = try env.initializeBackup( e2eId: e2e.getId(), udId: ud.getId(), password: password, callback: .init { data in + semaphore?.wait() if !didAddParams { - addParams() + if let backup = env.backup() { + backup.addJSON(paramsString) + didAddParams = true + } } else { env.backupCallbacks.registered().handle(data) } } ) env.backup.set(backup) + semaphore?.signal() + semaphore = nil } } }