Replace detached tasks with Task.dispatch(on:) (#201)

* Use Task.detach(on:) everywhere that was blocking.
* Don't wrap the continuations in a Task 🤦‍♂️
* Add sendable requirement to closure.
This commit is contained in:
Doug
2022-09-21 17:50:15 +01:00
committed by GitHub
parent 60f0f1605b
commit 8462862afc
9 changed files with 125 additions and 130 deletions
@@ -93,16 +93,14 @@ class UserSessionStore: UserSessionStoreProtocol {
.basePath(path: baseDirectoryPath)
.username(username: credentials.userID)
let loginTask: Task<Client, Error> = Task.detached {
let client = try builder.build()
try client.restoreLogin(restoreToken: credentials.restoreToken)
return client
}
switch await loginTask.result {
case .success(let client):
do {
let client: Client = try await Task.dispatch(on: .global()) {
let client = try builder.build()
try client.restoreLogin(restoreToken: credentials.restoreToken)
return client
}
return await setupProxyForClient(client)
case .failure(let error):
} catch {
MXLog.error("Failed restoring login with error: \(error)")
return .failure(.failedRestoringLogin)
}